есть ли способ ускорить mysql, как производительность оператора, если задействована дикая карта? например. как «%»% тестmysql как повышение производительности
ответ
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%"
), так что позволил бы двигатель, чтобы сузить область поиска с помощью индексов. Однако это невозможно во всех ситуациях.
Иногда шаг предварительной обработки может превращать поиск подстановочных знаков в обычное равенство или полнотекстовый поиск. Вы получите больше, найдя способ структурировать свои данные, чтобы он не требовал поиска подстановочных знаков, а не пытался оптимизировать последний.
по существу, если индекс столбца с индексом B + дерева, этого достаточно. Автоматически MySql быстрее ищет запросы LIKE – Antony