Производительность большого текстового столбца PostgreSQL - PullRequest
6 голосов
/ 05 сентября 2011

Я храню отправленные электронные письма в СУБД, включая адрес, адрес и тело письма.

Тело может быть любым произвольным количеством текста, и я никогда не буду искать его.

Есть ли какие-либо проблемы с производительностью, о которых я должен беспокоиться, если у меня есть потенциально большой столбец, который не используется слишком часто в одной из моих наиболее часто используемых таблиц (электронных писем)?

(Этот проект написан на Rails)

Ответы [ 2 ]

8 голосов
/ 05 сентября 2011

postgresql хранит большие объекты во вторичной области.Вы можете прочитать об этом здесь: TOAST .Главной задачей будет исключение большого объекта из списка запросов, которые возвращают много строк, чтобы избежать посещения вторичной области хранения.

Если и когда вы решите добавить функцию поиска в телотекст, вам нужно будет использовать полнотекстовую стратегию, которая хорошо поддерживается в Postgres, но не интуитивно понятна.Тема получает полную главу обращения в руководстве.

7 голосов
/ 05 сентября 2011

Нет, вам не нужно беспокоиться об этом.

Технически нет никакой разницы в хранении, например, между varchar(5) и столбец text.

Цитата из руководства

между этими тремя типами нет разницы в производительности, за исключением увеличенного места для хранения при использовании типа с пустым заполнением

Три упомянутых типа: char, varchar и text. Где char - это "тип с пробелом".

...