No, s tím že pole je super náhrada za vazební tabulku v případě M:N vazeb si dovolím zásadně nesouhlasit. Už to že na tom nelze definovat standardní constraint je zásadní chyba – nevím jak Vám, ale mne na konzistenci dat docela záleží. Nechci trávit hodiny opravami konzistencí které vznikly „příliš chytrým řešením.“
A co se rychlosti týká, velmi výrazně závisí na použití. Beru že pokud potřebujete načíst tu hlavní tabulku a jenom „sem tam“ nějaké závislé záznamy (na základě ID z pole v řádku hlavní tabulky), tak to může být rychlejší. Ale jakmile procento načítaných záznamů vzroste nad určitou mez (a to v řádu jednotek procent), tak to bude výrazně pomalejší než využití JOINu přes vazební tabulku.
A to z toho prostého důvodu že zatímco v případě použití pole vlastně simulujete „nested loop“ join (a tedy náhodný přístup), PostgreSQL může zvolit optimální způsob joinování těch tabulek.
Nehledě na to že pokud potřebujete v té hlavní tabulce vyhledávat podle těch podřízených záznamů, tak je to úplně v háji …

