Saltar al contenido

SQL ‘LIKE BINARY’ más lento que simple ‘LIKE’?

Solución:

Si el rendimiento parece convertirse en un problema, podría Sería una buena idea crear una copia del primero, por ejemplo. 255 caracteres del texto largo, agregue un índice sobre eso y use el startswith con ese.

Por cierto, esta página dice: “si necesita hacer una coincidencia que distinga entre mayúsculas y minúsculas, declare su columna como BINARIA; no use LIKE BINARY en sus consultas para convertir una columna no binaria. Si lo hace, MySQL no usará ninguna índices en esa columna “. Es un consejo antiguo, pero creo que sigue siendo válido.

Para la siguiente persona que se encuentre con esto, en nuestra base de datos relativamente pequeña, la consulta:

SELECT * FROM table_name WHERE field LIKE 'some-field-search-value';

... Result row

Returns 1 row in set (0.00 sec)

En comparación con:

SELECT * FROM table_name WHERE field LIKE BINARY 'some-field-search-value';

... Result row

Returns 1 row in set (0.32 sec)

En pocas palabras, al menos para nuestra base de datos (MySQL 5.5 / InnoDB) hay una diferencia muy significativa en el rendimiento entre las dos búsquedas.

Aparentemente, aunque esto es un error en MySQL 5.5: http://bugs.mysql.com/bug.php?id=63563 y en mis pruebas con la misma base de datos en MySQL 5.1, la consulta LIKE BINARY todavía usa el índice (mientras que en 5.5 hace un escaneo completo de la tabla).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *