Подтвердить что ты не робот

Как определить, какой тип индекса использовать в Postgres?

У меня есть база данных Postgres, в которой есть 2 столбца, которые не являются первичными ключами (и не могут быть), но выполняются поиск по большому количеству и сравниваются для равенства с двумя столбцами в других таблицах.

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

Я узнал, что есть несколько типов индексирования, которые я могу выбрать. Как определить, какой метод будет наиболее эффективным для моей базы данных? Также был бы правильным методом создать единый индекс, который охватывает оба столбца?

4b9b3361

Ответ 1

Postgres поддерживает типы B-дерева, R-дерева, Hash, GiST и GIN. Индексирование B-дерева является наиболее распространенным и подходит для большинства распространенных сценариев. Это синтаксис:

CREATE INDEX idex_name ON table_name USING btree(column1, column2);

Вот документация createindex, и здесь больше информации о разных indextypes в postgres.

Какой тип индекса вы должны использовать, зависит от того, какие типы операций вы хотите выполнить. Если вы просто хотите проверить равенство, то хэш-индекс является лучшим. Для большинства распространенных операций (например, сравнение, сопоставление образцов) следует использовать B-дерево. Я лично никогда не использовал индексацию GiST или GIN. ЛЮБОЙ Гуру там?

В документации описываются все эти типы. Они могут помочь вам лучше меня:)

Надеюсь, что это поможет.

Ответ 2

Попытайтесь понять queryplanner, потому что эта часть PostgreSQL должна работать с вашими индексами. EXPLAIN ANALYZE будет необходим для оптимизации ваших запросов.