Каково максимальное количество столбцов в запросе выбора PostgreSQL

Знаете ли вы, какое максимальное количество столбцов может быть запрошено в Postgresql? Мне нужно знать это, прежде чем я начну свой проект.

4 ответа

Решение

Согласно About PostgreSQL это "250 - 1600 в зависимости от типов столбцов". Смотрите "Пределы". Типы столбцов влияют на это, потому что в PostgreSQL строки могут иметь максимальную ширину 8 КБ (одна страница), они не могут охватывать страницы. Большие значения в столбцах - это нормально, потому что TOAST справляется с этим, но существует ограничение на количество столбцов, которое вы можете разместить, в зависимости от того, насколько широко используются типы данных без TOASTed.

(Строго говоря, это относится к столбцам, которые могут храниться в строках на диске; запросы могут использовать более широкие наборы столбцов, чем этот. Я не рекомендую полагаться на это.)

Если вы даже думаете о приближении к границам столбцов, у вас, вероятно, будут проблемы.

Отображение электронных таблиц в реляционные базы данных кажется самой простой вещью в мире - сопоставить столбцы со столбцами, строки со строками и перейти. Правильно? На самом деле, электронные таблицы - это огромные монстры свободной формы, которые не имеют никакой структуры и могут быть очень неудобными. Реляционные базы данных предназначены для обработки гораздо большего количества строк, но по стоимости; в случае PostgreSQL часть этой стоимости является ограничением того, насколько широкими должны быть эти строки. Когда вы сталкиваетесь с электронными таблицами, созданными пользователем Joe, это может быть реальной проблемой.

Одно из "решений" - разложить их на EAV, но работать с ними невероятно медленно и некрасиво. Лучшие решения используют массивы, где это возможно, составные типы, hstore, JSON, XML и т. д.

В конце, тем не менее, иногда лучшим ответом является анализ электронной таблицы с использованием электронной таблицы.

Для тех, кто может найти эту информацию полезной, ответ - 1663, в зависимости от типов столбцов, встречающихся в этом сообщении. Http://archives.postgresql.org/pgsql-admin/2008-05/msg00208.php

Одной из причин наличия большого количества столбцов является хранение большого вектора слов из интеллектуального анализа текста.

Анализ текста может производить 10000 или более функций, то есть столбцов.

Вы можете использовать хранилище данных, такое как MonetDB, которое утверждает, что "количество столбцов в таблицах практически не ограничено".

При использовании типа JSON/JSONB почти нет необходимости иметь очень много столбцов в таблице.

И в редких случаях, если вам нужно достичь максимального предела столбцов в вашей системе баз данных, возможно, вы могли бы использовать реализацию электронной таблицы СУБД с таблицей, подобной следующей:

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)
);

Это позволило бы практически неограниченное количество столбцов, но его использование было бы менее тривиальным.

Другие вопросы по тегам