Ésta es toda la consulta ...Optimización de MySQL Query - consultas internas
SELECT s.*, (SELECT url FROM show_medias WHERE show_id = s.id AND is_primary = 1) AS media_url
FROM (shows As s)
WHERE `s`.`id` IN (
SELECT DISTINCT st.show_id
FROM show_time_schedules AS sts
LEFT JOIN show_times AS st ON st.id = sts.show_time_id
WHERE sts.schedule_date BETWEEN CAST('2012-01-10' AS date) AND CAST('2012-01-14' AS date)
)
AND `s`.`is_active` = 1
ORDER BY s.name asc
Si ...
SELECT url FROM show_medias WHERE show_id = s.id AND is_primary = 1
(0.0004 sec)
Y ...
SELECT DISTINCT st.show_id
FROM show_time_schedules AS sts
LEFT JOIN show_times AS st ON st.id = sts.show_time_id
WHERE sts.schedule_date BETWEEN CAST('2012-01-10' AS date) AND CAST('2012-01-14' AS date)
(0.0061 sec)
¿Existe una obvia razón ...
SELECT s.*, (inner query 1) AS media_url
FROM (shows As s)
WHERE `s`.`id` IN (inner query 2)
AND `s`.`is_active` = 1
ORDER BY s.name asc
está tomando 5.7245 sec
?
explican EXTENDIDO
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY s ALL NULL NULL NULL NULL 151 100.00 Using where; Using filesort
3 DEPENDENT SUBQUERY sts ALL NULL NULL NULL NULL 26290 100.00 Using where; Using temporary
3 DEPENDENT SUBQUERY st eq_ref PRIMARY PRIMARY 4 bvcdb.sts.show_time_id 1 100.00 Using where
2 DEPENDENT SUBQUERY show_medias ALL NULL NULL NULL NULL 159 100.00 Using where
Fuera de interés, ¿ha mirado el rendimiento por (INTERIOR, IZQUIERDO dependiendo de si solo desea mostrar con su l o no) ¿ÚNETE a show_medias en show_medias.show_id = s.id en lugar de hacer la subconsulta en su lista de selección? Me interesaría ver eso. ¿Algo en EXPLAIN para la consulta? – dash
@dash muchas gracias por su ayuda hasta ahora, agregó el 'EXPLAIN EXTENDED', y su consulta sugerida arrojó casi el mismo rendimiento si no un poco más largo de 6.x segundos. – jondavidjohn
¿Sabes qué índices tienes en tus tablas? En particular, ¿alguna de las columnas de Id. Utilizadas en su índice de consulta está en shows, show_time_schedules, show_times y show_medias? – dash