Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è più veloce:INSTR o LIKE?

Le ricerche FULLTEXT saranno assolutamente più veloci, come notato da kibibu nei commenti sopra.

Comunque :

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)

Nei miei test, si comportano esattamente allo stesso modo. Non fanno distinzione tra maiuscole e minuscole e generalmente eseguono scansioni di tabelle complete, un divieto generale quando si ha a che fare con MySQL ad alte prestazioni.

A meno che tu non stia effettuando una ricerca di prefisso su una colonna indicizzata:

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

In tal caso, il LIKE con solo un carattere jolly suffisso è molto più veloce.