Эффективность составного индекса Postgres с заданным списком столбцов - PullRequest
0 голосов
/ 11 октября 2018

Допустим, у меня есть составной индекс, включающий эти 3 столбца.

(name, email, phone)

Будет ли этот индекс по-прежнему использоваться для этих запросов?Первый запрос включает в себя только 2 индексированных поля, а второй индекс использует более всех полей.Кстати, какой тип индекса наиболее подходит для этого?

SELECT * FROM person WHERE emails = 'xxx@email.com' AND phone = '012645678'

и

SELECT * FROM person WHERE name = 'dude' AND emails = 'xxx@email.com' AND phone = '012645678' AND title = 'CEO'

1 Ответ

0 голосов
/ 11 октября 2018

Для типичного индекса b-дерева следует использовать второй запрос (возможно, в зависимости от статистики таблицы).Как правило, индексы используются «слева направо» с условиями равенства в where.Первый запрос не имеет условия для name.

Ни один индекс не является оптимальным для обоих запросов, но индекс на (emails, name), вероятно, будет работать хорошо.

Обратите внимание также на то, что номера телефоновобычно хранятся в виде строк.Ваше сравнение с числом.Преобразование типов может повлиять на использование индексов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...