【发布时间】:2012-12-15 18:16:39
【问题描述】:
我有这个查询在company 和question 两个表上运行良好。两个表的结构如下:
company | question
id | id
name | company_id
| sentiment
SELECT company.id as company_id, company.name, question.sentiment,
(SELECT count(*) FROM question
WHERE question.sentiment=0 AND question.company_id=company.id) AS count
FROM question
JOIN company ON company.id=question.company_id
WHERE question.sentiment = 0 GROUP BY company_id ORDER BY count DESC LIMIT 5
我一直在试图弄清楚如何重写它以避免子查询似乎会减慢查询执行速度。 问题表有超过 1000 条记录。 此外,使用索引已将执行时间从 545.037 秒减少到 180.228 秒,我仍然需要改进。
谢谢
【问题讨论】:
-
尝试“解释扩展”,看看优化器如何处理它。可能会给你一些关于如何进行的线索。
-
诊断慢查询需要完整的表和索引定义,而不仅仅是描述或解释。也许您的表格定义不佳。也许索引没有正确创建。没有看到表和索引定义,我们无法分辨。
标签: mysql performance select group-by