有谁知道如何优化这个查询?
SELECT planbook.*,
COUNT(pb_unit_id) AS total_units,
COUNT(pb_lsn_id) AS total_lessons
FROM planbook
LEFT JOIN planbook_unit ON pb_unit_pb_id = pb_id
LEFT JOIN planbook_lesson ON pb_lsn_pb_id = pb_id
WHERE pb_site_id = 1
GROUP BY pb_id
较慢的部分是获取匹配单元和课程的总数。我有以下字段(和其他字段)的索引:
我唯一的目标是获得匹配单元和课程的总数以及每个计划书行的详细信息。
但是,此查询大约需要 35 秒。我在 planbook 中有 1625 条记录,planbook_unit 中有 13,693 条记录,planbook_lesson 中有 122,950 条记录。
有什么建议么?
编辑:解释结果
SELECT planbook.*,
( SELECT COUNT(*) FROM planbook_unit
WHERE pb_unit_pb_id = planbook.pb_id ) AS total_units,
( SELECT COUNT(*) FROM planbook_lesson
WHERE pb_lsn_pb_id = planbook.pb_id ) AS total_lessons
FROM planbook
WHERE pb_site_id = 1
planbook: INDEX(pb_site_id)
planbook_unit: INDEX(pb_unit_pb_id)
planbook_lesson: INDEX(pb_lsn_pb_id)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句