느린 쿼리에 문제가 있습니다. 테이블을 고려해보십시오. - VoterGuid, CandidateGuid의 두 개의 열이 있습니다. 유권자가 여러 후보자에게 투표를 실시합니다.매우 느린 SQL 쿼리
이 테이블에는 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 익스프레스에서 실행하는 무섭게 시간이 오래 걸리는 :
코드입니다.
누구나이 속도를 높이고 빠른 시일 내에 실행할 수있는 좋은 방법을 제안 할 수 있습니까? CandidateGuid는 개별적으로 색인이 생성되며, CandidateGuid + VoterGuid에는 복합 기본 키가 있습니다.
나는 당신이 주문을 처리하고 카운트를 평가하기 때문에 CountOfVotes에 추가 인덱스가 필요하다고 생각합니다. – DrCopyPaste
CountOfVotes가이 쿼리 내에서 계산되었지만 영구 인덱스 가능 열이 아닙니다. – Jackfruit
오, 내 늦게 도착하는 것은 너무 미안하다. :) – DrCopyPaste