Ver Mensaje Individual
  #4 (permalink)  
Antiguo 23/02/2013, 20:12
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: 17 años, 3 meses
Puntos: 2658
Respuesta: Optimizar consulta con explain

Hay cosas que no me parecen correctas de tu consulta, por ejemplo:
- Pones condiciones en el FROM que deberían ir en el WHERE.
- Ciertas condiciones implican relaciones que no estás declarando en el FROM
- La existencia de esos valores en ambas tablas, no siendo PKs, hacen inferir que hay un diseño algo defectuoso (redundancia peligrosa) e indices faltantes.
- Hay campos evidentemente numéricos que se están comparando como cadenas, lo que exige una conversión implícita innecesaria (probable defecto de programación).

A mi entender, habría que replantear la consulta con algo así como:
Código MySQL:
Ver original
  1.     listM.prtx__ref,
  2.     listM.value
  3.     prtx_list_m listM
  4.     INNER JOIN prtx_prt_prc  cat ON (cat.prtx__ref = typex.ref AND listM.prt__name = cat.prt__name)
  5.     INNER JOIN prtx__comentssubs typex  ON typex.ref = listM.prtx__ref
  6.     listM.prt__name = 'comentssubs'
  7.     AND listM.prtc__col_name = 'llmult'
  8.     AND cat.prc__id IN (680, 533, 3, 20)
  9.     AND typex.public = 1

En ese caso por ejemplo, puede inferirse que se requieren al menos cuatro indices para que el tema funcione, sobre los campos:
- prtx_list_m.prt__name
- prtx_list_m.prtc__col_name
- prtx_prt_prc .prc__id
- prtx__comentssubs.public

También es posible que la cosa mejora si en la tabla prtx_list_m se define un índice INDEX sobre (prtx__ref, value)

Por cierto, te recomiendo enfáticamente no usar palabras reservadas como nombres de columnas, porque eso puede trae consecuencias imprevisibles (por ejemplo, puede producir errores de sintaxis indetectables). Me refiero en especial a ese campo llamado "value".
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)