10/01/2014, 06:38
|
| Moderador criollo | | Fecha de Ingreso: noviembre-2007 Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años Puntos: 2658 | |
Respuesta: Problema con consulta de Mysql Las consultas por valores numéricos jamás se deben hacer con LIKE.
LIKE se usa para consultas por aproximación, y un número es una magnitud discreta, o como mucho un rango, pero no existe un número "parecido a". O es igual a, mayor, menor, próximo, o está entr. Pero no es "parecido".
La cláusula LIKE está optimizada para trabajar cadenas de caracteres, no con números.
Todo esto, sin dejar de lado, además, que poner "%loquesea%" es un espanto de consulta, porque pides todo lo que comience con cualquier cosa y termine con cualquier cosa.
¿Como logra realizar esa búsqueda la BBDD?
Simple: Lee absolutamente toda la tabla, sin usar índices (salvo que apliquen a otros campos), con lo que la performace de la query es un asco.
Es preferible poner el comodín al principio o al final, pero no en ambas partes.
Además hay que tener en cuenta algo clave: las personas habitualmente ponen a buscar palabras completas, los inicios de las palabas o los finales. Pero es muy extraño que alguien busque "rdenad" o "mput", si quiere encontrar "ordenador" o "computadora". ¿No les parece.
En cuanto a búsquedas por palabras intermedias, eso es buscar palabras intermedias, para lo cual los índices FULLTEXT son mejores, y no aplica LIKE.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque)
Última edición por gnzsoloyo; 10/01/2014 a las 06:43 |