Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist schneller – INSTR oder LIKE?

VOLLTEXT-Suchen werden absolut schneller sein, wie kibibu in den Kommentaren oben angemerkt hat.

Allerdings :

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)

In meinen Tests funktionieren sie genau gleich. Bei beiden wird die Groß- und Kleinschreibung nicht beachtet, und im Allgemeinen führen sie vollständige Tabellenscans durch, ein allgemeines Tabu, wenn es um Hochleistungs-MySQL geht.

Es sei denn, Sie führen eine Präfixsuche in einer indizierten Spalte durch:

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

In diesem Fall ist das LIKE mit nur einem Suffix-Wildcard viel schneller.