Знаете ли вы, какое максимальное количество столбцов можно запросить в Postgresql? Мне нужно знать это, прежде чем я начну свой проект.
Каково максимальное количество столбцов в запросе на выбор PostgreSQL
Ответ 1
В соответствии с О PostgreSQL оно "250 - 1600 в зависимости от типа столбцов". См. "Пределы". Типы столбцов влияют на него, потому что в строках PostgreSQL может быть не более 8kb (одна страница), они не могут охватывать страницы. Большие значения в столбцах - это ОК, потому что TOAST обрабатывает это, но существует ограничение на количество столбцов, в которые вы можете поместиться, зависит от того, насколько широко используются неотображаемые типы данных.
(Строго говоря, это относится к столбцам, которые могут быть сохранены в строках на диске, а запросы могут иметь более широкий набор колонок, чем это. Я не рекомендую полагаться на него.)
Если вы даже подумываете о приближении к границам столбцов, вы, вероятно, будете иметь проблемы.
Сопоставление таблиц с реляционными базами данных выглядит как самая простая вещь в мире - сопоставление столбцов с столбцами, строк и строк. Правильно? На самом деле, электронные таблицы представляют собой огромные монстры свободной формы, которые не обеспечивают никакой структуры и могут быть действительно бесполезными. Реляционные базы данных предназначены для обработки большего количества строк, но по стоимости; в случае PostgreSQL часть этой стоимости является ограничением того, насколько широка она нравится тем строкам. Когда сталкиваются с электронными таблицами, созданными Джо Пользователь, это может быть реальной проблемой.
Одно "решение" состоит в том, чтобы разложить их на EAV, но это невыносимо медленно и уродливо работать. В лучших решениях используются массивы, где это возможно, составные типы, hstore
, json, xml и т.д.
В конце концов, однако, лучший ответ - это проанализировать таблицу с помощью электронной таблицы.
Ответ 2
Для других, кто может найти эту информацию, полезен ответ 1663 в зависимости от типов столбцов, связанных с этим сообщением http://archives.postgresql.org/pgsql-admin/2008-05/msg00208.php
Ответ 3
Одна из причин наличия большого количества столбцов - хранить большой вектор слов, начиная с текстового поиска.
Вывод текста может производить 10 000 или более функций, а также столбцы.
Вы можете использовать хранилище данных, например MonetDB, в котором утверждается, что "количество столбцов на таблицы практически неограничено".
Ответ 4
С использованием типа JSON/JSONB почти нет необходимости иметь очень много столбцов в таблице.
И в редких случаях, если бы вы попали в максимальный предел столбцов вашей системы баз данных, возможно, вы могли бы использовать реализацию RDBMS электронной таблицы со следующей таблицей:
create table wide_table(
id serial not null primary key
,rownum integer not null
,colnum integer not null
,colname varchar(30) not null
,coltype varchar(30) not null
,nullable boolean not null
,collen integer
,colprec integer
,colscale integer
,colvalue raw(2000)
,unique (rownum,colnum)
);
Это позволило бы практически неограниченное количество столбцов, но использование этого было бы менее тривиальным.