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.