Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/11/2014, 12:03
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Optimizar consulta por texto

Hola alx1417:

Tal como lo mencionas, la consulta que planteas puede traerte problemas al utilizar comparaciones tipo LIKE, ya que estas, de entrada, son las que peor desempeño o rendimiento tienen en SQL... además, la manera en que la estás utilizando, es decir, con el comodín % antes y después de la palabra a buscar, hacen que la condición tenga un peor rendimiento, ya que la búsqueda se haría de manera exhaustiva contra todo el texto que puedas tener en tu consulta.

Los índices funcionan tal como lo infieres, para optimizar búsquedas y ordenaciones, puedes checar estas dos ligas para leer un poco de teoría al respecto:

http://dev.mysql.com/doc/refman/5.0/...l-indexes.html

http://dev.mysql.com/doc/refman/5.1/en/index-hints.html

Ahora bien, dado que necesitas hacer búsquedas sobre campos tipo texto, tal vez te convenga sustituir las comparaciones tipo LIKE por operaciones de BÚSQUEDA DE TEXTO COMPLETO, es decir utilizar las funciones MATCH-AGAINST, estás funciones son mucho más versátiles que el LIKE y están optimizadas para el tipo de búsquedas que planteas.

Checa un poco de la teoría para ver si te puede servir.

http://dev.mysql.com/doc/refman/5.0/...xt-search.html

Finalmente, hacer consultas tipo SELECT * es una terrible idea, en lugar de traer todos los campos, es mejor que listes en el SELECT sólo aquellos que realmente necesitas. Aun si fuera el caso de que realmente necesites recuperar todos y cada uno de los campos:

Código:
es mejor que pongas

SELECT id, nombre, texto, fecha FROM tabla

a poner 

SELECT *
Saludos
Leo