Postgres: необходимо ли добавить индекс для запроса выбора "где ноль"? - PullRequest
0 голосов
/ 26 апреля 2018

Учитывая таблицу людей, например .:


id  name  emailed_at
1   Foo   2018-01-01
2   Bar   NULL

Нужно ли добавлять индекс к emailed_at для выполнения запроса SELECT * FROM people WHERE emailed_at IS NULL?

UPDATE: Фактическая таблица содержит около 12 столбцов, сотни тысяч строк, и только самые последние (~ 1 день) записи должны иметь значение NULL в этом поле.

1 Ответ

0 голосов
/ 26 апреля 2018

Для двух строк проблем с производительностью нет вообще. Для большой таблицы индекс поможет. IS NULL совпадает с любым другим сравнением "равенства". Может воспользоваться индексом.

Преимущество индексации заключается в том, что таблица охватывает несколько (много?) Страниц данных. Индекс обычно уменьшает количество страниц данных, которые необходимо обработать. Если многие записи emailed_at равны NULL (например, 50% в вашем примере), то любая заданная страница, вероятно, будет иметь значения NULL - и индекс гораздо менее полезен.

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