там должен так или иначе ускорить mysql как производительность оператора, если подстановочный знак включен? например, как '%test %'
MySQL может использовать индекс, если ваш запрос выглядит как foo LIKE 'abc%'
или foo LIKE 'abc%def%'
. Он может использовать индекс для любой части или строки перед первым подстановочным знаком. Если вам нужно найти слово в любом месте строки, лучше использовать индексы FULLTEXT
.
Более подробно об индексах: http://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html
Полнотекстовый поиск: http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
Что ж, самая простая оптимизация - иметь постоянный префикс (например, «test%»
вместо «% test»
или «% test%»
]), поскольку это позволит движку сузить область поиска с помощью индексов. Однако это возможно не во всех ситуациях.
Иногда этап предварительной обработки может превратить поиск по шаблону в обычный поиск по равенству или полнотекстовый поиск. Вы получите больше, найдя способ структурировать свои данные так, чтобы он не требовал поиска по шаблонам, чем пытаясь оптимизировать последний.