Muchas veces utilizamos para buscar algún campo String en una base de datos MySql, confirmamos con lower y trim para poner todo el texto en minúsculas y eliminar espacios en blanco, tanto el principio como al final del registro.
SELECT * FROM tabla WHERE lower(trim(email))=lower(trim(‘emaildeprueba@prueba.com’));
Eliminar esas funciones sql en MySql reduce la consulta en un 70% con un número alto de registros.
La mejor solución para esto es:
- Introducir los datos con esas opciones ya realizadas. Facilmente en php o cualquier otro lenguaje de programación podemos realizar estas funciones, con un uso de máquina mucho menor.
$email = strtolower(trim($email)); - actualizar todos los datos de la tabla para no tener estos problemas en un futuro
UPDATE tabla SET email=lower(trim(email)); - Ya se puede eliminar estas funciones de la consulta(query).
SELECT * FROM tabla WHERE email=’emaildeprueba@prueba.com’;
Es importante reducir el uso de CPU por parte de las consultas a base de datos, que es lo que nos puede retardar las respuestas al cliente. Como siempre hemos comentado, es muy importante optimizar las sentencias SQL para optimizar los tiempos de respuesta de la pagina web. Hay muchas cosas además de Indexar las tablas para optimizar una base de datos mysql.