我正在努力获取存储在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
更新:
感谢所有回复。表格结构(最低限度)如下:
seotc: | Id |时钟| CampusID |期限|
seotcresults_v2: | Id |时钟| CampusID |期限| Q1 | Q2 | ...等
Id
是调查和调查结果的每个表中的自动递增索引
其中“Clock
”是教师的ID,可以在seotc
和seotcresults_v2
表中多次找到,因为它们有多个类,并为每个类完成了多个调查多个术语。我基本上试图根据给定学期中给定学校的教师的调查数量与给定相同参数的结果数量来确定响应率。这有帮助吗?
我很快就会尝试运行EXPLAIN。
答案 0 :(得分:4)
首先要检查的是:WHERE子句列是否已编入索引?
然后:你需要ORDER BY,这是一种排序,而且价格昂贵。
最后,.clock列是否已编入索引?
答案 1 :(得分:0)
我认为这个查询甚至不会给你正确的结果。
为campusID和Term以及可能的时钟添加索引。然后尝试此查询:
SELECT 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
GROUP by seotcresults_v2.Clock
ORDER BY seotcresults_v2.Clock