sql >> Databáze >  >> RDS >> PostgreSQL

Lze pole PostgreSQL optimalizovat pro připojení?

Ne, ukládání FK do pole není nikdy dobrý nápad pro obecné tabulky. Především je zde skutečnost, kterou jste mimochodem zmínili:Omezení cizího klíče pro prvky pole nejsou implementována (zatím). To samo o sobě by mělo tento nápad zrušit.

Došlo k pokusu o implementaci funkce pro Postgres 9.3, který byl zastaven vážnými problémy s výkonem. Viz toto vlákno o pgsql-hackers.

I když lze výkon při čtení polem pro určité případy použití zlepšit, výkon zápisu prudce klesá. Myslete na to:Chcete-li vložit, aktualizovat nebo odstranit jeden prvek z dlouhého pole, musíte nyní napsat novou verzi řádku s celým polem pro každý změněný prvek. A také před sebou vidím vážný spor o zámek.

Pokud je vaše tabulka pouze pro čtení , myšlenka začíná dávat větší smysl. Ale pak bych zvážil materializovaný pohled s denormalizovanými poli nahoře normalizované implementace many-to-many:

MV může zahrnout všechny spojovací tabulky a vytvořit jednu plochou tabulku pro ještě lepší výkon čtení (pro typické případy použití). Tímto způsobem získáte referenční integritu a dobrý výkon při čtení (a zápisu) – za cenu režie a dodatečného úložiště pro správu MV.




  1. Příklady SQUARE() v SQL Server

  2. Jak připojit XAMPP MySQL místní DB pomocí JDBC?

  3. Migrace sloupců Oracle DATE do TIMESTAMP s časovým pásmem

  4. Kontingenční tabulka s nekardinálními hodnotami