2012-10-30 7 views
-5

나는 비교적 간단한 질문이 있습니다.t SQL 조합과 조인 순서 (효율성)

데이터 세트 A와 데이터 세트 B는 모두 구조가 동일합니다.

는 최종 결과는 데이터 세트 A와 데이터 집합 B의 모든 조합이 될 것입니다, 우리는

그러나 최종 버전 전에, 최종 데이터 세트는 데이터 세트에 가입하여 필터를 적용 할 필요가 C.

데이터 셋 전화 할게 X.

질문은 데이터 집합 X에 데이터 집합 A를 조인하고 데이터 집합 X에 데이터 집합 B를 조인 한 다음 합집합 ALL A와 B를 조인해야합니까? 아니면 전체 A와 B를 C로 조인 한 다음 C에서 X에 조인해야합니까?

무엇이 더 빠르며 더 많은 메모리를 효율적으로 사용합니까?

미리 감사드립니다.

+3

SSMS에서 실행 시간과 쿼리 계획을 비교해 보았습니까? – Pondlife

+4

여기에있는 누구라도 쿼리, 데이터, 하드웨어에서 어떤 점이 더 효율적인지 말할 수있는 좋은 위치에 있다고 생각합니까? –

+0

요점은이 특정 쿼리에서이 특정 서버의 특정 데이터 집합에 대해 더 효율적인 것이 아니라는 것입니다. 한 가지 명령이 SQL에서 코드를 처리하는 방식으로 대형 데이터 집합에 더 효율적인지 묻는 것이 었습니다. 보편적 인 대답이없고 유사한 크기의 데이터 세트를 사용할 때 SQL 서버가 코딩되는 방식에 문제가있는 것보다 느리거나 빠를 경우. – jz3

답변

1

내 직감은 x와 결합하여 결과를 결합합니다. 그런 식으로 SQL Server Optimizer가 최적의 쿼리 계획을 제공 할 수있는 가능성은 더 높지만이 두 가지를 작성하고 실행 계획과 타이밍을 확인하여 실제로 차이점을 확인할 수 있습니다.

5

그것은 많은 것들에 달려 있습니다. 귀하의 질문에서 말하기는 불가능합니다 : 인덱싱, 통계, INNER 또는 OUTER JOIN, 데이터 유형. 당신은 훨씬 더 많은 것을 알아야 할 것이며 실행 계획을 비교할 필요가 있습니다.

자신을 반복하고 싶지 않기 때문에 유지 관리를 위해 UNION 외부에서 JOIN을 수행 할 것입니다. 그러나 내기를해야한다면 아마도 먼저 조인을 우선 수행 할 수 있습니다. 특히 조인 행 수를 크게 줄입니다.

+0

모두 내부 조인입니다. 그들은 행 수가 항상 크게 줄어들지는 않습니다.방금 몇 가지 테스트 시나리오를 실행하여 다음 결과를 얻었습니다. 각 데이터 집합에 조인을 수행 한 다음 평균 약 26 초간 완료 한 후에 모두 조인합니다. 먼저 합집합을 수행 한 다음 결과를 합하면 평균 21.5 초가 소요됩니다. 이것은 ~ 65k 행의 결과입니다. 이 적은 양의 행에 대해 중요한 차이가있는 것으로 보입니다. – jz3

+0

@ jz3 데이터, 코드 및 실행 계획에 대해 더 많이 알 필요가 있습니다. –

1

저는 둘 모두의 실행 계획을보고 시간/자원이 적게 들었는지 봅니다.

Here is a great starter video SQL Authority에서 성능 조정 시작. 정말 충분히주의를 끌지 못하는 주제.

최적화의 진화에 대한 실행 계획을 모니터링하는 것은 참호에서 실제로 내려지기 때문에 훌륭한 기법입니다. 인덱스 및 기타 튜닝 기법이 실행시에 어떻게 효과를 발휘할지를 보여줍니다.