【发布时间】:2010-12-09 15:55:46
【问题描述】:
我正在尝试获取存储在seotc 中的需要进行的调查计数,以及存储在seotcresults_v2 中的已完成调查计数。 seotc 表拥有近 10 万条记录,seotcresults_v2 表拥有大约一半的记录。如何加快查询速度?
SELECT
DISTINCT seotcresults_v2.Clock,
COUNT(seotc.Id) AS Surveys,
COUNT(seotcresults_v2.Id) AS Complete
FROM seotc
JOIN seotcresults_v2 ON seotcresults_v2.Clock = seotc.Clock
WHERE seotcresults_v2.CampusID = 40
AND seotcresults_v2.Term = 201011
ORDER BY seotc.Clock
更新:
感谢所有回复。表结构(最低限度)是这样的:
搜索引擎优化: |身份证 |时钟 |校园ID |术语 |
seotcresults_v2: |身份证 |时钟 |校园ID |学期 |第一季度 | Q2 | ...等
Id 是调查和调查结果的每个表中的自动递增索引
其中“Clock”是讲师的 ID,可以在 seotc 和 seotcresults_v2 表中多次找到,因为它们有多个课程,并且每个课程针对多个学期完成了多项调查。我实际上是在尝试根据给定学期中给定校园的讲师的调查数量与在给定相同参数的情况下发布的结果数量来确定响应率。这有帮助吗?
我很快也会尝试运行 EXPLAIN。
【问题讨论】:
-
您可能希望将表格结构添加到您的问题中。
-
你在这些表上定义了哪些索引?
-
另外,请在查询上运行 EXPLAIN 并粘贴输出。
-
您不需要 GROUP BY 才能使 COUNT() 工作吗?
-
尝试在 seotcresults_v2.(Clock,CampusID,Term) 或 (Clock,Term,CampusID) 上创建复合索引?