2010-03-20 4 views

ответ

27

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

+0

по существу, если индекс столбца с индексом B + дерева, этого достаточно. Автоматически MySql быстрее ищет запросы LIKE – Antony

4

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

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