Индексация Postgres?
Я новичок в postgres. У меня есть столбец с именем host
(строка varchar2) в таблице, которая имеет около 20 миллионов строк. Как использовать индексирование для оптимизации поиска для поиска конкретного хоста. Кроме того, в этой колонке будет обновляться ежедневно мне нужно написать триггер индексации на определенный интервал? Если да, то как мне это сделать? (Для записей я использую Ruby и Rails 3)
3 ответов
предполагая, что вы делаете точные совпадения, вы должны просто иметь возможность создать индекс и оставить его:
CREATE INDEX host_index ON table_name (host)
оптимизатор запросов должен просто использовать автоматически.
вы можете указать другие параметры, такие как параметры сортировки для использования.
посмотреть документы PostgreSQL для создания индекса для получения дополнительной информации.
Я бы предложил использовать BRIN Index
с момента его введения из PostgreSQL 9.5, а не обычного индекса btree.
для текстового поиска рекомендуется использовать типы индексов GIN или GiST.
https://www.postgresql.org/docs/9.5/static/textsearch-indexes.html
другая возможность заключается в том, что если бы вы только выполняли точное соответствие в host
столбец, т. е. нет сравнения неравенства (>
, <
) и частичное соответствие (like
, подстановочный знак), вы можете рассмотреть возможность преобразования host
к целому хэшу, чтобы ускорить поиск значительно.