grabbee
@grabbee

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

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

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

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

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

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