MySQL LIKE против LOCATE: что эффективнее?
При выполнении запросов на сопоставление шаблонов в MySQL у вас есть два основных варианта: LIKE оператор и функция LOCATE. Какой из них работает быстрее?
Чтобы ответить на этот вопрос, давайте сравним производительность этих двух подходов с помощью простого теста. Следующий запрос использует оператор LIKE для поиска строк, в которых столбец содержит определенный текст:
SELECT * FROM table WHERE column LIKE '%text%';
В следующем запросе используется функция LOCATE для выполнения той же операции:
SELECT * FROM table WHERE LOCATE('text',column)>0;
Выполнение этих запросов к большому набору данных показывает, что оператор LIKE немного быстрее, прежде всего потому, что он позволяет избежать дополнительного сравнения (> 0), требуемого LOCATE. Вот результаты теста:
mysql> SELECT BENCHMARK(100000000,LOCATE('foo','foobar')); --------------------------------------------- | BENCHMARK(100000000,LOCATE('foo','foobar')) | --------------------------------------------- | 0 | --------------------------------------------- 1 row in set (3.24 sec) mysql> SELECT BENCHMARK(100000000,LOCATE('foo','foobar') > 0); ------------------------------------------------- | BENCHMARK(100000000,LOCATE('foo','foobar') > 0) | ------------------------------------------------- | 0 | ------------------------------------------------- 1 row in set (4.63 sec) mysql> SELECT BENCHMARK(100000000,'foobar' LIKE '%foo%'); -------------------------------------------- | BENCHMARK(100000000,'foobar' LIKE '%foo%') | -------------------------------------------- | 0 | -------------------------------------------- 1 row in set (4.28 sec) mysql> SELECT @@version; ---------------------- | @@version | ---------------------- | 5.1.36-community-log | ---------------------- 1 row in set (0.01 sec)
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3