Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/04/2014, 15:57
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: Optimizar búsqueda en varias tablas

Bueno, por lo pronto, condiciones de este tipo son terriblemente ineficientes, asesinas de performance:
Código MySQL:
Ver original
  1. WHERE LOWER(CONCAT(p.producto,' ',e.nombre,' ',m.marca,' ',c.clasificacion)) LIKE '%LA-VARIABLE%'
porque realizas la búsqueda realizando un full table scan sobre una tabla derivada (la tabla resultado).
Para búsquedas de ese tipo yo francamente te sugeriría usar stored procedures, tablas temporary, y eventualmente MyISAM para poder utilizar indices FULLTEXT.
Si quieres ver cuál es el esfuerzo de MySQL, usa EXPLAIN sobre esa consulta, en tu propia base (se requiere el acceso a las tablas y con datos para usarlo), y sobre la base del resultado podrás ver qué te conviene mejorar, indexar.
Lo que no se recomienda jamás es hacer un "buscatodo en todo", por más que parezca una buena idea. Hacer 5 queries consecutivas puede ser más eficiente qmue una "superconsulta" que lo busque todo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)