Индексирование не поможет при использовании вместе с LIKE '%something%'
.
Это похоже на поиск слов в словаре, в которых где-то есть ae
.Словарь (или Индекс в данном случае) организован на основе первой буквы слова, затем второй буквы и т. Д. В нем нет механизма для помещения всех слов с ae
в них близко друг к другу.Вы по-прежнему читаете весь словарь от начала до конца.
Индексация полей, используемых в предложении CASE, скорее всего, вам не поможет.Индексирование помогает легко находить записи в таблице.Предложение CASE касается обработки найденных вами записей, а не их нахождения.
Оптимизаторы также могут бороться с оптимизацией нескольких несвязанных OR
условий, таких как ваша.,Оптимизатор пытается сузить объем усилий, необходимых для выполнения вашего запроса, но это трудно сделать, когда несвязанные условия могут сделать запись приемлемой.
В целом ваш запросвыиграли бы от индексов roots(root_id)
и / или roots(id)
, но не намного больше.
Если бы вы проиндексировали дополнительные поля, две основные затраты:
- увеличение времени записи (вставка(обновить или удалить) из-за дополнительных индексов для записи в
- Увеличение занимаемого места на диске