SELECT
쿼리를 최적화 할 수있는 방법이 있는지 궁금합니다. (참고 : 존재하지 않는 테이블에 대한 내 질문을 작성할 때 입력 한 올바른 구문이 없을 수도 있습니다.)SQL Server에서 사례 테스트를 최적화하십시오.
목표는 Table2 관련된 행이 세 번째 열의 값을 숫자로 설정하려면 원하는 경우 표 2의 관련 행 수 그렇지 않으면 Table3 관련된 행이 Table3 관련된 행 수를 설정하려면 원하는 경우. 그렇지 않으면, 나는 기본적으로 내가 (이가지 경우에) 두 번 같은 쿼리를 수행하고있어 사실을 좋아하지 않아 0
SELECT Id, Title,
CASE
WHEN EXISTS (SELECT * FROM Table2 t2 WHERE t2.RelatedId = Table1.Id) THEN
(SELECT COUNT(1) FROM Table2 t2 WHERE t2.RelatedId = Table1.Id)
WHEN EXISTS (SELECT * FROM Table3 t3 WHERE t3.RelatedId = Table1.Id) THEN
(SELECT COUNT(1) FROM Table3 t3 WHERE t3.RelatedId = Table1.Id)
ELSE 0
END AS RelatedCount
FROM Table1
에 열 값을 설정합니다. 한 번만 쿼리를 수행하면서 원하는 것을 할 수 있습니까?
JOIN
및 UNION
이 여러 개인 훨씬 더 큰 쿼리의 일부이므로 완전히 다른 접근 방식을 사용하는 것이 쉽지 않습니다.
저는 이것을 이해하려고 애 쓰고 있습니다. 당신이'RelatedId'에 가입하고 있기 때문에 이것에 의한'GROUP'의 이점은 무엇입니까? 또한'JOIN'을 사용하는 이유는 무엇입니까? 'COUNT (*)'를 별개의 열로 사용하는 것과 비슷하지 않겠는가? –
@JonathanWood'GROUP BY '는'RelatedId' 당 몇개의 레코드를 세는지를 허용합니다. 나는 두 번째 문장을 따르지 않는다. 예? – RedFilter
나는 그것을 얻는다라고 생각한다. 그것은'COUNT'가 적용되기 전에 그룹화되어 있으므로,'ON' 절은 우리가 원하는 합계를 반환합니다. T-SQL은 제 첫 번째 언어가 아니며 단지 제게 이상하게 보입니다. 일부 테스트를 실행 중입니다 ... –