grabbee
@grabbee

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

Например. Таблица пользователей. У них есть поле MODERATED - нужно показывать чаще всего тех кто прошел модерацию. Тех кто не прошел значительно меньше(1-2%), но они есть.
* Мускуль по собственному желанию игнорирует индекс по этому полю,
* и запрос вместо 0,02 сек выполняется 10-20 секунд

Я не могу повлиять на сам запрос. Я узнал что в случае Boolean индекса мускуль любит его игнорировать, а как правильно поступить я ещё не знаю :)
  • Вопрос задан
  • 308 просмотров
Пригласить эксперта
Ответы на вопрос 2
BojackHorseman
@BojackHorseman Куратор тега MySQL
Слава ЗСУ!
8.2.1.16 ORDER BY Optimization

если оптимизитор считает, что чтение индекса + обход таблицы по нему дороже прямого скана таблицы, он не будет его использовать.
иногда приходится ему подсказывать. но редко.
Ответ написан
Комментировать
SagePtr
@SagePtr
Еда - это святое
Если вы своим запросом дёргаете с диска 98% содержимого таблицы, то тут вам никакой индекс не поможет, гораздо эффективнее в таком случае всю таблицу с диска прочитать и отфильтровать, чем читать индекс и вразнобой дёргать с диска разные строчки, а потом их собрать воедино.
И оптимизатор прекрасно понимает эту особенность и использует только те индексы, которые помогут значительно снизить количество и объёмы чтений с диска.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Teamlead Краснодар
от 90 000 до 150 000 ₽
Омхоум Москва
от 100 000 до 150 000 ₽
RollerAds Санкт-Петербург
от 4 000 до 6 000 $
09 авг. 2022, в 16:20
1500 руб./за проект
09 авг. 2022, в 16:07
9999 руб./в час
09 авг. 2022, в 15:53
800 руб./за проект