Ответ 1
В соответствии с О PostgreSQL оно "250 - 1600 в зависимости от типа столбцов". См. "Пределы". Типы столбцов влияют на него, потому что в строках PostgreSQL может быть не более 8kb (одна страница), они не могут охватывать страницы. Большие значения в столбцах - это ОК, потому что TOAST обрабатывает это, но существует ограничение на количество столбцов, в которые вы можете поместиться, зависит от того, насколько широко используются неотображаемые типы данных.
(Строго говоря, это относится к столбцам, которые могут быть сохранены в строках на диске, а запросы могут иметь более широкий набор колонок, чем это. Я не рекомендую полагаться на него.)
Если вы даже подумываете о приближении к границам столбцов, вы, вероятно, будете иметь проблемы.
Сопоставление таблиц с реляционными базами данных выглядит как самая простая вещь в мире - сопоставление столбцов с столбцами, строк и строк. Правильно? На самом деле, электронные таблицы представляют собой огромные монстры свободной формы, которые не обеспечивают никакой структуры и могут быть действительно бесполезными. Реляционные базы данных предназначены для обработки большего количества строк, но по стоимости; в случае PostgreSQL часть этой стоимости является ограничением того, насколько широка она нравится тем строкам. Когда сталкиваются с электронными таблицами, созданными Джо Пользователь, это может быть реальной проблемой.
Одно "решение" состоит в том, чтобы разложить их на EAV, но это невыносимо медленно и уродливо работать. В лучших решениях используются массивы, где это возможно, составные типы, hstore
, json, xml и т.д.
В конце концов, однако, лучший ответ - это проанализировать таблицу с помощью электронной таблицы.