@ivandao

Есть ли смысл индексировать boolean-поле?

Есть поле типа boolean в таблице, по нему часто происходит отбор.
Если ли смысл его индексировать или boolean сам по себе уже максимально индексирован?
  • Вопрос задан
  • 589 просмотров
Решения вопроса 2
Отвечая на вопрос "имеет ли смысл индексировать поле X" нужно всегда оперировать:
0. Особенностями конкретной СУБД.
1. Структурой таблиц.
2. Структурой запроса.
3. Содержимым таблицы.
4. Результатами EXPLAIN по запросу до индексации.
5. Результатами EXPLAIN после тестовой индексации.

Вы в вопросе не привели ничего из вышеперечисленного, поэтому можно дать только теоретические выкладки:
1. Кардинальность у этого индекса будет низкой. Это не очень хорошо, но и не смертельно.
2. Для запросов select id from mytable where field = 1; этот индекс может давать приличный профит при условии, что в таблице много других колонок - СУБД не придётся считывать лишние данные с диска, будет использоваться только индекс. Если же запрос сложнее или таблица проще, то профит уменьшается. Конкретные значения может дать только EXPLAIN.

Учитесь работать с EXPLAIN, никакие ответы в интернете не помогут лучше него. Ещё полезно прочитать книгу High Performance MySQL.
Ответ написан
Комментировать
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
В случае PostgreSQL: bitmap index обеспечивают значительное и преимущество в производительности для данных с низким количеством вариантов при приемущественном чтении.


https://wiki.postgresql.org/wiki/Bitmap_Indexes#Im...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы