MySQL как повышение производительности - PullRequest
20 голосов
/ 20 марта 2010

Есть ли способ ускорить MySQL, как производительность оператора, если задействован подстановочный знак? например. как "% test%"

Ответы [ 2 ]

27 голосов
/ 20 марта 2010

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

5 голосов
/ 20 марта 2010

Что ж, самой простой оптимизацией было бы иметь постоянный префикс (например, "test%" вместо "%test" или "%test%"), поскольку это позволило бы движку сузить пространство поиска с помощью индексов. Однако это возможно не во всех ситуациях.

Иногда шаг предварительной обработки может превратить поиск по шаблону в обычное равенство или полнотекстовый поиск. Вы получите больше, найдя способ структурировать свои данные таким образом, чтобы он не требовал поиска по шаблону, а не пытался оптимизировать последние.

...