Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/08/2014, 15:59
xerifandtomas
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Optimizar consulta

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Probemos:
Código MySQL:
Ver original
  1.   SELECT nombre, apellidos, id, CONCAT( nombre, ' ', apellidos ) AS nombre_apellidos
  2.   FROM ficha_cliente
  3.   WHERE id !=1
  4.   AND (nombre_apellidos LIKE '%texto%' OR id LIKE 'texto%')
  5. ) AS nombre2
  6. ORDER BY nombre_apellidos
Gracias por la respuesta pero esa construcion de la consulta no es valida.


en la tabla tengo los siguientes campos:
-------------------
id
nombre
apellidos
otros campos.
--------------------

La idea es unir nombre y apellidos en un campo para poder buscar una cadena dentro de esa union de campos y/o por id, no se si me explico.


Siguiendo tu proposicion he contruido la siguiente consulta:

Código SQL:
Ver original
  1. SELECT *
  2.     FROM (
  3.     SELECT nombre, apellidos, id, CONCAT( nombre, ' ', apellidos ) AS nombre_apellidos
  4.     FROM ficha_cliente WHERE id !=1
  5.     ) AS nombre2
  6.   WHERE
  7.   (nombre_apellidos LIKE '%m%' OR id LIKE 'ale%') ORDER BY nombre_apellidos

Los tiempos mejoran bastante, aun asi me sigue diciendo con el explain , Using where; Using filesort; , indicando que la consulta debe/puede ser mejorada optimizada.

He probado a crear un indice compuesto por el nombre y apellidos, y forzar el uso del indice mediante FORCE INDEX o USE INDEX, pero entre usar o forzar el indice y no usarlo no se aprecian diferencias.

La tabla actualmente tiene 1500 registros aprox, no se si con este volumen de registros entre usar o no indice puede ser irrelevante y de ahi que no se aprecie diferencia.

Seguire investigando, igualmente si teneis alguna sugerencia lo agradezco.

Última edición por xerifandtomas; 12/08/2014 a las 16:42