【发布时间】:2012-03-27 15:12:32
【问题描述】:
我的这个查询有很多左连接和一个带日期的内连接。 我需要按 id_art(来自articles_art)和 date_dat(dates_dat)进行分组。问题是这真的很慢。 1000条记录需要3秒。 dates_dat 在 dates_dat 表中建立索引,id_art 是articles_art 的主键。 我可以做些什么来优化这个查询?
SELECT
id_art, image2_art, video_art, website,
text.title_int, text.intro_int, text.text_int, text.extra_int,
dat.date_dat, dat.date2_dat,
group_concat(tim.time_tim),
prd.name_prd,
group_concat(cat.name_cat),
trg.name_trg,
spa.name_spa,
spa2.name_spa
FROM
articles_art AS art
LEFT JOIN internText_int AS text ON text.idart_int = art.id_art
INNER JOIN dates_dat AS dat ON art.id_art = dat.idart_dat
LEFT JOIN spaces_spa As spa ON spa.id_spa = dat.idspa_dat
LEFT JOIN spaces_spa As spa2 ON spa.id_spa = dat.idspa2_dat
LEFT JOIN times_tim AS tim ON tim.iddat_tim = dat.id_dat
LEFT JOIN articles_products_artprd AS artprd ON artprd.idart_artprd = art.id_art
LEFT JOIN products_prd AS prd ON prd.id_prd = artprd.idprd_artprd
LEFT JOIN cater_cev AS cev ON cev.idart_cev = dat.idart_dat
LEFT JOIN categories_cat AS cat ON cat.id_cat = cev.idcat_cev
LEFT JOIN targets_trg AS trg ON trg.id_trg = art.idtrg_art
WHERE
prd.id_prd in (1,2)
AND validated_art = 1
AND text.idlin_int in (1,4)
GROUP BY
id_art, date_dat
【问题讨论】:
-
你能发布解释计划吗?
-
索引是选择查询中性能的关键——在查询中添加解释将有助于确定您缺少索引的地方。
-
查询的解释应该如何帮助?我看到了 possible_keys、key、ref、rows 等,但我不知道这对我有什么帮助。你能给我解释一下吗?谢谢
标签: mysql sql group-by group-concat