Ver Mensaje Individual
  #3 (permalink)  
Antiguo 13/08/2015, 03:24
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: consulta con like

No. Ningún DBMS tiene modo de hacer o qué quieres, porque carece de utilidad global y porque requeriría algoritmos de pésima performance.
No se ha considerado en los DBMS ese tipo de consultas porque, por un lado requeriría barrer el diccionario de datos para determinar sobre qué campos se aplicará (si es que hay una definición al respecto), y además porque en caso de aplicar a un JOIN, obligaría a recorrer todos los campos de todas las tablas de un JOIN, por ejemplo. y si solo consideramos 20 tablas por 50 campos, significaría de entrada hacer LIKE sobre más de 1000 columnas...sin contar con que haya columnas de tipo BLOB, LONGTEXT, y TEXT.
¿Te imaginas el nivel de degradación que tendría la performance del servidor de BBDD?

Un espanto.

Por otro lado, existiendo ya los índices FULLTEXT y las cláusulas MATCH () ... AGAINST() para búsqueda multicampo sobre ese tipo de índices, usar LIKE es innecesario.

Adicionalmente, el modo en que estás usando los LIKE está mal, porque no estás poniendo el patrón como texto . Le faltan los apostrofos:
Código MySQL:
Ver original
  1. SELECT * FROM alumnos
  2. WHERE nombre LIKE '%a%' OR apaterno LIKE '%a%' OR amaterno LIKE '%a%';

Finalmente, la consulta es ineficiente, ya que al poner los comodines a ambos lados del valor obligas a MySQL a hacer un FULL TABLE SCAN, lo que es el peor tipo de consulta. En serio. No existe peor performance que la de un full table scan.

Tendrás que indicar una a una las columnas sobre als que se deberá usar el LIKE.

Nota bene: Por favor, recuerda que LIKE está solo definido para columnas de texto, es decir VARCHAR, TEXT, CHAR y LONGTEXT. No lo uses con fechas o numeros... Los resultados son erróneos.
__________________
¿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; 13/08/2015 a las 05:47