我遇到緩慢查詢的問題。考慮表tblVotes - 它有兩列 - VoterGuid,CandidateGuid。它擁有選民投給任何候選人的選票。非常慢的SQL查詢
有超過300萬行此表 - 與13000不同的選民投票時,約270萬考生不同。該表中的行總數目前爲650萬。
什麼我的查詢要達到的目的是讓 - 儘可能以最快和最高速高效的方式(我們使用的SQL Express) - 根據他們收到的票數排名前1000的候選人。
的代碼是:
SELECT CandidateGuid, COUNT(*) CountOfVotes
FROM dbo.tblVotes
GROUP BY CandidateGuid
HAVING COUNT(*) > 1
ORDER BY CountOfVotes DESC
...但是這需要一個scarily很長時間才能在SQL Express運行時,有一個非常完整的表。
任何人可以提出一個很好的方式來加快這得到它在快速的時間運行? CandidateGuid被單獨編入索引 - 並且CandidateGuid + VoterGuid上有一個複合主鍵。
我認爲你需要CountOfVotes上的額外索引,因爲你的排序是通過它來完成的,Count也會對它進行評估。 – DrCopyPaste 2013-05-07 14:30:57
CountOfVotes計算在這個查詢裏面,它不是一個永久性的可索引列嗎? – Jackfruit 2013-05-07 14:36:14
哦,我的,它在這裏遲到我很抱歉:) – DrCopyPaste 2013-05-07 14:38:51