Ver Mensaje Individual
  #5 (permalink)  
Antiguo 16/04/2013, 21:02
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Más específico que LIKE

Es como te dicen, Rafael: Si usas el LIKE sin comodines, es semánticamente idéntico a usar "=".
Código MySQL:
Ver original
  1. mysql> SELECT 'abcde' LIKE 'abcd';
  2. +---------------------+
  3. | 'abcde' LIKE 'abcd' |
  4. +---------------------+
  5. |                   0 |
  6. +---------------------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql> SELECT 'abcde' LIKE 'abcde';
  10. +----------------------+
  11. | 'abcde' LIKE 'abcde' |
  12. +----------------------+
  13. |                    1 |
  14. +----------------------+
  15. 1 row in set (0.00 sec)

Código MySQL:
Ver original
  1. mysql> SELECT 'abcde' = 'abcd';
  2. +------------------+
  3. | 'abcde' = 'abcd' |
  4. +------------------+
  5. |                0 |
  6. +------------------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql> SELECT 'abcde' = 'abcde';
  10. +-------------------+
  11. | 'abcde' = 'abcde' |
  12. +-------------------+
  13. |                 1 |
  14. +-------------------+
  15. 1 row in set (0.00 sec)

Para mi (y que me perdonen los programadores), el uso de LIKE es un vicio de desarrolladores que no quieren escribir consultas mejores (fiaca, bah!). Es consultar datos al tun-tun.

De hecho, entre los lineamientos de buenas prácticas de la consultora para la que trabajo, explícitamente dice en los manuales que no debe usarse el LIKE en ningún desarrollo, y que de ser necesario sólo pueden hacerse con el comodín al inicio o al final ('%palabra' o 'palabra%'), pero nunca se usan al mismo tiempo.
La razón de esto es por un lado performántica: poner ambos obliga al motor de base de datos a realizar un full table scan, una de las peores formas de consulta.
Por otro lado, tiene un sentido práctico: Si analizas el comportamiento de los usuarios, descubrirás que la mayor parte de las veces la persona busca el inicio de las frases o palabras, o el final de las mismas, pero muy rara vez busca frases intermedias. Y para estas últimas es siempre más eficiente el uso de indices FULLTEXT, MATCH() AGAINST o expresiones regulares.
__________________
¿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; 16/04/2013 a las 21:10