Индексирование Postgres? - PullRequest
7 голосов
/ 19 января 2012

Я новичок в postgres.У меня есть столбец с именем host (строка varchar2) в таблице, которая содержит около 20 миллионов строк.Как мне использовать индексирование для оптимизации поиска, чтобы найти конкретный хост.Кроме того, этот столбец будет обновляться ежедневно. Нужно ли писать индексирование триггера через определенный интервал?Если да, как мне это сделать?(Для записей я использую Ruby и Rails 3)

Ответы [ 3 ]

7 голосов
/ 19 января 2012

Предполагая, что вы делаете точные совпадения, вы можете просто создать индекс и оставить его:

CREATE INDEX host_index ON table_name (host)

Оптимизатор запросов должен просто использовать это автоматически.

Возможно, вы захотите указать другие параметры, такие как порядок сортировки.

См. Документацию PostgreSQL для CREATE INDEX для получения дополнительной информации.

0 голосов
/ 08 мая 2017

Для текстового поиска рекомендуется использовать индексы GIN или GiST.

https://www.postgresql.org/docs/9.5/static/textsearch-indexes.html

Другая возможность состоит в том, что если вы выполняли только точное сопоставление в столбце host, т. Е. Не проводилось сравнение неравенства (>, <) и частичное сопоставление (like, подстановочный знак), вы можете рассмотреть преобразование host в хэш-целое число, чтобы значительно ускорить поиск.

0 голосов
/ 18 октября 2016

Я бы предложил использовать BRIN Index с момента его появления в PostgreSQL 9.5 вместо обычного индекса btree.

...