mssql server 2008을 사용합니다. 성능을 비교해야합니다. 다음 주까지는 쿼리 분석기에 액세스 할 수 없습니다. 그것은 단지 미친 생각이고, 어떤 스크립트가 가장 잘 작동하는지 알고 싶습니다.이 예제는 인덱스를 사용하는 것이 가장 좋습니다
어떤 스크립트가 txt에서 색인을 사용할 수 있는지, 왜 그런지 궁금합니다. (2 * 조인)
SELECT *
FROM table1 t1 LEFT JOIN
table2 t2 ON t1.id = t2.t1_id
AND NOT t2.txt LIKE 'blue%'
AND NOT t2.txt LIKE 'green%'
INNER JOIN table2 t3 ON t1.id = t3.t1_id
WHERE t2.id is NULL
SQL2 : (1 * 1 가입 *
2- 테이블
3 개 인덱스와 두 테이블의 합계가 대략 1 밀 SQL1가table1(id int(clustered index), name varchar(10))
table2(t1_id int(non-clustered index), txt varchar(10)(non-clustered index))
행
를 있음 '또는')SELECT *
FROM table1 t1 LEFT JOIN
table2 t2 ON t1.id = t2.t1_id
AND (t2.txt LIKE 'blue%' or t2.txt LIKE 'green%')
AFAI는 스택 Exchange 데이터 탐색기에 "실행 계획보기"옵션이 있음을 기억합니다. 부정은 없기 때문에 SQL2는 나에게 한 눈에 훨씬 더 sargable 해 보인다. –
BTW는 올바른 DDL을 제공하십시오 (t1_id에 대한 정보를 놓치 셨고 정확히 어떤 색인을 가지고 있는지 설명하지 못했습니다 - t2에 두 개의 개별 색인이 있거나 단 하나의 복합 색인이 있습니까? clustered?) –
@ MartinsSmith가 t1_id를 수정했습니다. 총 3 개의 인덱스가 있는데, 어느 인덱스가 클러스터되어 있는지를 추가했습니다. 유일한 재미있는 색인은 txt에 색인 –