"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ## MySQL LIKE vs LOCATE: ¿Cuál es más rápido para la coincidencia de patrones?

## MySQL LIKE vs LOCATE: ¿Cuál es más rápido para la coincidencia de patrones?

Publicado el 2024-11-09
Navegar:744

##  MySQL LIKE vs LOCATE: Which is Faster for Pattern Matching?

MySQL LIKE vs LOCATE: ¿Cuál es más eficiente?

Al realizar consultas de coincidencia de patrones en MySQL, tiene dos opciones principales: LIKE operador y la función LOCALIZAR. ¿Cuál funciona más rápido?

Para responder a esta pregunta, comparemos el rendimiento de estos dos enfoques utilizando un punto de referencia simple. La siguiente consulta utiliza el operador LIKE para buscar filas donde una columna contiene un texto específico:

SELECT * FROM table WHERE column LIKE '%text%';

La siguiente consulta utiliza la función LOCATE para realizar la misma operación:

SELECT * FROM table WHERE LOCATE('text',column)>0;

La ejecución de estas consultas en un conjunto de datos grande muestra que el operador LIKE es marginalmente más rápido, principalmente porque evita la comparación adicional (> 0) requerida por LOCATE. Aquí están los resultados de una prueba comparativa:

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)
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3