Mysql
 sql >> база данни >  >> RDS >> Mysql

Кое е по-бързо - INSTR или LIKE?

Търсенето в ПЪЛЕН ТЕКСТ ще бъде абсолютно по-бързо, както Кибибу отбеляза в коментарите по-горе.

Въпреки това :

mysql> select COUNT(ID) FROM table WHERE INSTR(Name,'search') > 0;
+-----------+
| COUNT(ID) |
+-----------+
|     40735 | 
+-----------+
1 row in set (5.54 sec)

mysql> select COUNT(ID) FROM table WHERE Name LIKE '%search%';
+-----------+
| COUNT(ID) |
+-----------+
|     40735 | 
+-----------+
1 row in set (5.54 sec)

В моите тестове те се представят абсолютно същото. И двете не са чувствителни към малки и големи букви и като цяло извършват сканиране на цяла таблица, общо не-не, когато се работи с високопроизводителен MySQL.

Освен ако не правите търсене по префикс в индексирана колона:

mysql> select COUNT(ID) FROM table WHERE Name LIKE 'search%';
+-----------+
| COUNT(ID) |
+-----------+
|         7 | 
+-----------+
1 row in set (3.88 sec)

В този случай LIKE само със заместващ знак на суфикс е много по-бърз.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Въведение в SQL Joins

  2. Трябва ли PHP разработчиците да използват съхранените процедури на MySQL?

  3. Има ли начин да използвам ON DUPLICATE KEY за актуализиране на всичко, което исках да вмъкна?

  4. Сравнете датите в MySQL

  5. Получаване на ежедневни отчети за събития, които не се случват всеки ден