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

Jaký je maximální počet sloupců ve výběrovém dotazu PostgreSQL

Podle PostgreSQL Limits je to "250 - 1600 v závislosti na typech sloupců". Viz poznámka pod tabulkou. Typy sloupců to ovlivňují, protože v PostgreSQL mohou být řádky široké maximálně 8 kb (jedna stránka), nemohou rozložit stránky. Velké hodnoty ve sloupcích jsou v pořádku, protože to zvládá TOAST, ale počet sloupců, do kterých se můžete vejít, je omezen, který závisí na tom, jak široké jsou použité datové typy un-TOASTed.

(Přísně se to týká sloupců, které lze uložit do řádků na disku; dotazy mohou používat širší sady sloupců, než je tato. Nedoporučuji na to spoléhat.)

Pokud dokonce uvažujete o přiblížení se limitům sloupců, pravděpodobně budete mít problémy.

Mapování tabulek na relační databáze se zdá jako ta nejjednodušší věc na světě – namapujte sloupce na sloupce, řádky na řádky a jděte. Že jo? Ve skutečnosti jsou tabulky obrovská monstra volného tvaru, která nevynucují žádnou strukturu a mohou být opravdu nemotorná. Relační databáze jsou navrženy tak, aby zpracovávaly spousta více řádků, ale za cenu; v případě PostgreSQL je součástí těchto nákladů omezení toho, jak široké tyto řádky chce mít. Když čelíme tabulkám vytvořeným uživatelem Joe, může to být skutečný problém.

Jedním z „řešení“ je rozložit je na EAV, ale to je nevýslovně pomalé a ošklivé na práci. Lepšími řešeními jsou použití polí, kde je to možné, složené typy, hstore , json, xml atd.

Nakonec je však někdy nejlepší odpovědí analyzovat tabulku pomocí tabulky.



  1. Co je výchozí omezení v SQL Server - SQL Server / TSQL výukový program, část 90

  2. Používejte relační databáze MySQL na Fedoře 12

  3. SQLite JSON_GROUP_ARRAY()

  4. Jak mohu použít PDO k načtení pole výsledků v PHP?