遅いクエリに問題があります。テーブルtblVotesについて考えてみます。このテーブルには、VoterGuid、CandidateGuidという 2 つの列があります。有権者が任意の数の候補者に投じた票を保持します。
このテーブルには 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 に複合主キーがあります。