비교

2012-11-29 17 views
0

나는 두 SQL 질의를 질의 조인을 적용한 다음 조건을 적용하여 데이터를 필터링합니다. 내가 알고 싶은 건 그 두 가지와 그 이유 모두에서 더 빠른 것입니다.비교

+3

더 빠른 SQL 클라이언트를 찾으려면 SQL 클라이언트 –

+1

에서 실행 시간을 볼 수 있습니다. 각 쿼리에 대해'EXPLAIN' 명령을 점검하여 데이터베이스가 쿼리를 실행하는 데 필요한 단계를 표시 할 수도 있습니다. 질의 전에'EXPLAIN' 키워드를 넣으면됩니다. –

+0

은 SQL 2008에 Explain이 있습니다. (사용할 수 없습니다) – Vishwajeet

답변

1

두 번째 쿼리가 더 빠릅니다. 옵티마이 저는 먼저 where 절을 사용하여 테이블을 필터링 한 다음 나중에 조인에 사용할 내부 임시 테이블을 만듭니다. 결론 - 더 나은 솔루션은 더 작은 데이터 세트를 포함하는 테이블과 결합하는 것입니다.

한편 옵티마이 저가 하위 쿼리를 포함하지 않는 두 번째 쿼리를 쉽게 처리합니다.

+1

완벽 ..... + 1 – Dejan

0

SQL Server 2008에는 실행 계획을 표시 할 수 있습니다. 어딘가에 단추가 있습니다. 두 쿼리를 같은 창에 넣으면 각 시간에 소요 된 시간의 비율을 알 수 있습니다. 결과의 정확성은 밀리 초 또는 2 이상을 실제로 수행하는 쿼리에 따라 달라질 수 있습니다.

나는 두 번째 쿼리가 옵티 마이저에 훨씬 더 많은 자유를 주지만 첫 번째 쿼리는 비효율적 인 경로로 유도하지만 옵티 마이저가 시도하지 않는보다 효율적인 경로로 유도 할 수 있다고 생각합니다. 효율의 차이는 테이블 레이아웃에 달려 있다고 확신하지만, 최적화 된 쿼리는 단순한 쿼리에 비해 효율성이 떨어질 수 있습니다.

SQL에 대한 중요한 점은 일을하는 방법을 알려주지 않고 최적화 프로그램에서 처리하도록 두 번째 쿼리가 선호되기 때문입니다 (옵티 마이저가 항상 좋은 것은 아니지만 직업, 그래서 나는 optimiser가 그것을 처리하게하고, 스트레스 테스트를하고, 상황이 느린 지, 어쩌면 프로파일 러를 사용하여 문제가되는 질의를 확인하고, 더 효율적인 경로로 강제적으로 할 것을 제안한다.

0

일반적으로 조인에서 적절한 인덱스를 사용하는 경우 서브 쿼리가 느려집니다.