업데이트
이 질문은 시기상조라고 생각합니다. 몇 가지 테스트를 더 거친 후에 성능이 향상되지 않았 음을 알게되었습니다. 몇 가지 테스트를 추가로 수행하고 업데이트를 게시합니다. 그때까지, 이걸 귀찮게 대답하지 마라.SQL 쿼리 UNION 성능
나는이 같은 쿼리 ...
SELECT DISTINCT TOP 11 [Field_A]
FROM [#TempTable]
WHERE [Field_A] NOT IN (SELECT bo.[Id]
FROM [BusinessObject_Table] bo
UNION
SELECT boTemp.[Id]
FROM [#BusinessObject_Table] boTemp)
이 쿼리는 꽤 큰 데이터 세트에 대한 실행하는 데 영원히 소요했다. 또한 일부 성능 향상을 가져온 Temp 테이블의 Id 열에 CLUSTERED 인덱스를 추가했으나 완료하지 못했습니다.
나는이 초에 완성이이 쿼리 ...SELECT DISTINCT TOP 11 [Field_A]
FROM [#TempTable]
WHERE [Field_A] NOT IN (SELECT bo.[Id]
FROM [BusinessObject_Table] bo)
AND [Field_A] NOT IN (SELECT boTemp.[Id]
FROM [#BusinessObject_Table] boTemp)
를 교체했다. 누군가 여기서 일어난 일을 설명 할 수 있습니까?
업데이트 : 나는 두 쿼리가 모두 같다고 생각했습니다. 이것이 내가 필요한 것입니다.
BusinessObject_Table has following Ids: 1, 2, 3
#BusinessObject_Table has: 3, 4, 5
TempTable has rows whose Field_A values are: 1, 2, 3, 4, 6
쿼리의 결과는해야한다 : 6 (위의 쿼리에서 주 변화)
내가 쿼리 계획 및 사후을 얻기 위해 노력할 것입니다 여기에. 서브 쿼리의 쿼리 계획의 부재에서 추측
계획을 게시하십시오. 쿼리는 어쨌든 다른 일을합니다. 두 번째 테이블은 두 테이블 모두에 나타나지 않는지 확인합니다. 첫 번째 테이블. 첫 번째는 'intersect'또는 두 번째'or '를 사용해야합니다. –