В любом случае, чтобы ускорить mysql, как производительность оператора, если задействована дикая карта? например. например, "% test%"
Mysql как повышение производительности
Ответ 1
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
Ответ 2
Ну, самая простая оптимизация - иметь постоянный префикс (например, "test%"
вместо "%test"
или "%test%"
), так как это позволит движению сузить пространство поиска с помощью индексов. Однако это невозможно во всех ситуациях.
Иногда шаг предварительной обработки может превращать поиск подстановочных знаков в обычное равенство или полнотекстовый поиск. Вы получите больше, найдя способ структурирования своих данных, чтобы он не требовал поиска по шаблону, чем пытаться оптимизировать последний.