다음 두 쿼리는 동일한 결과를 얻지 만 그룹을 사용하는 쿼리는 더 빠르게 실행됩니다. 가능한 경우 최적화 된 쿼리가 그룹을 사용하는 것을 선호합니까? 아니면 어떤 특별한 경우가 발생했을 가능성이 더 큽니까?왜 sql 쿼리를 통해 그룹을 훨씬 빠르게 만들 수 있습니까?
빠른 쿼리 (나에게 덜 직관적) :
SELECT A.Advertiser
FROM (SELECT TOP (100) PERCENT Advertiser, [Final Status]
FROM dbo.Rehenas_View_2
GROUP BY [Final Status], Advertiser
HAVING ([Final Status] IS NULL)) AS A INNER JOIN
(SELECT TOP (100) PERCENT Advertiser, [Final Status]
FROM dbo.Rehenas_View_2 AS Rehenas_View_2_1
GROUP BY [Final Status], Advertiser
HAVING ([Final Status] = N'final')) AS B ON A.Advertiser = B.Advertiser
GROUP BY A.Advertiser
느린 쿼리를 두 쿼리가 보인다
SELECT A.Advertiser
FROM (SELECT TOP (100) PERCENT Advertiser, [Final Status]
FROM dbo.Rehenas_View_2
WHERE ([Final Status] IS NULL)) AS A INNER JOIN
(SELECT TOP (100) PERCENT Advertiser, [Final Status]
FROM dbo.Rehenas_View_2 AS Rehenas_View_2_1
WHERE ([Final Status] = N'final')) AS B ON A.Advertiser = B.Advertiser
GROUP BY A.Advertiser
둘 다 EXPLAIN PLAN을 실행하면 힌트가 제공 될 수 있습니다. – duffymo
성능은 이것이 어느 db인지에 따라 다릅니다. 확실하게 MSSQL 인 것처럼 보이지만 명시 적으로 태그를 지정해야합니다. –
각 쿼리를 몇 번이나 시도 했습니까? 하나는 캐시 될 수 있습니다. 테이블에 어떤 지표가 있습니까? 그룹에 대한 해시 검색을 수행 할 수 있습니다. 중복 된 광고주/최종 상태 쌍이 많이 있습니까? 나는 필터가 중복이 제거 된 후에 발생한다고 생각하는데, 반면 인덱스와 쿼리 계획에 따라 전체 테이블 스캔을 수행한다고 생각합니다. – vol7ron