我遇到了慢查询的问题。考虑表tblVotes - 它有两列 - VoterGuid, CandidateGuid。它持有选民投票给任意数量的候选人的票。
此表中有超过 300 万行 - 大约 13,000 名不同的选民投票给大约 270 万不同的候选人。表中的总行数目前为 650 万。
我的查询试图实现的是——以最快和最高效的缓存方式(我们正在使用 SQL Express)——根据他们收到的票数获得前 1000 名候选人。
代码是:
SELECT CandidateGuid, COUNT(*) CountOfVotes
FROM dbo.tblVotes
GROUP BY CandidateGuid
HAVING COUNT(*) > 1
ORDER BY CountOfVotes DESC
...但是当有一个非常满的表时,这需要很长时间才能在 SQL Express 上运行。
任何人都可以提出一种加快速度并使其快速运行的好方法吗?CandidateGuid 是单独索引的——CandidateGuid+VoterGuid 上有一个复合主键。