Ver Mensaje Individual
  #6 (permalink)  
Antiguo 25/02/2011, 10:57
Avatar de SUSMO
SUSMO
 
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 188
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Duda con EXPLAIN en muchos registros

Hola,

Por un lado, he creado dos indices más en table2 y table3, que corresponden a los campos prtx__ref y prt__name a ver si eso ayuda, pero sigue siendo muy lenta.

También he estado probando diferentes combinaciones de subconsultas y esta es la que me da mejor resultado:

Código MySQL:
Ver original
  1. SELECT typex.*, listM.prtc__col_name as colM, listM.value as valueM, langs.prtc__col_name AS '__colName__',
  2. langs.malg__code AS '__code__',langs.TEXT AS '_text_'
  3.     SELECT *
  4.     FROM table1 WHERE ref IN ('0010021','0010022','0010023')
  5. ) as typex
  6. INNER JOIN table2 AS langs ON langs.prtx__ref = typex.ref AND langs.prt__name = 'gafas'
  7. LEFT JOIN table3 AS listM ON listM.prtx__ref = typex.ref AND listM.prt__name = 'gafas'

Ejecutando la consulta que tenía al principio en el MySQL Query Browser el tiempo de ejecución que me pone es de entre 14-16 segundos y con la modificación que he hecho es entre 8-9 segundos, una gran mejora sin duda (aunque no la suficiente)

Pero en cambio al llamar a la función php que ejecuta esa consulta, el tiempo con la primera consulta era de 18 segundos y con la que acabo de poner me peta por tiempo de ejecución.
La verdad es que no le veo el sentido.

Por otro lado, el número total de registros de table1 es de 2735 y en la consulta que me da problemas todas estas las referencias estan en el "where in". Por cada registro de esta tabla hay 9 registros de table2 (campos con idioma), y en la table3 puede o no corresponder con 6 registros, lo que hace un total de 154084 registros.

La verdad es que ya no se que más probar, estoy planteandome hacer las 3 consultas por separado pero creo que eso en lugar de mejorar el tiempo de ejucción lo empeoraria ¿no?

He probado también cambiar el tipo de dato de los indices , puesto que lo tenía en VARCHAR y he leído que con CHAR es son más optimas las consultas pero he reducido sólo 1 segundo
__________________
Perdida en el mundo del conocimiento

Última edición por SUSMO; 25/02/2011 a las 11:09 Razón: Otra prueba