sql >> Base de Datos >  >> RDS >> Mysql

¿Qué es más rápido, INSTR o LIKE?

Las búsquedas de TEXTO COMPLETO van a ser absolutamente más rápidas, como señaló kibibu en los comentarios anteriores.

Sin embargo :

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)

En mis pruebas, funcionan exactamente igual. Ambos distinguen entre mayúsculas y minúsculas y, por lo general, realizan escaneos de tablas completas, lo que generalmente no se debe hacer cuando se trata de MySQL de alto rendimiento.

A menos que esté realizando una búsqueda de prefijo en una columna indexada:

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

En cuyo caso, el LIKE con solo un sufijo comodín es mucho más rápido.