2014-07-21 3 views
0

데이터베이스가 약 50.000 개입니다. (C#을 + SQLSERVER 사용) 저장 프로 시저 (그냥 한 부분이다) 나는이 쿼리를 가지고 있다고 가정 해 봅시다 :SQL Server에서 왼쪽에 인덱스를 입력하십시오.

SELECT .... 
FROM 
Table1 t1 
LEFT JOIN Table2 t2 ON t1.ID=t2.ID 
LEFT JOIN Table3 t3 ON t2.ColumnName=t3.ColumnName 
WHERE 
ISNULL(t1.ColumnName,'') LIKE @arg1 //FAST 
ISNULL(t2.ColumnName2,'') LIKE @arg2//SLOW 
ISNULL(t3.ColumnName,'') LIKE @arg3 //SLOW 

을 내가 t3.Column2 후 쿼리가 느린 검색합니다. t1 컬럼을 살펴보면, 매력처럼 빠르게 작동합니다. 문제가 무엇입니까? 어떻게 속도를 높일 수 있습니까? 조인을 사용하지 않으려했지만 시도가 불가능합니다. 테이블에 인덱스를 추가 할 수 있습니까? 이 특별한 경우에 어떤 것이 있습니까?

+1

편집 된 질문에 따라 업데이트? t1.ColumnName 또는 t3.ColumnName2에 대한 색인이 있습니까? – JamieA

+0

텍스트 상자 - 검색 매개 변수의 값, 사람의 이름을 말하게합니다. – michael24B

+0

예, 색인은 t1.Id (클러스터 됨)입니다. 자동으로 생성 된 것 같습니다. – michael24B

답변

1

아래 옵션을 시도해보고 성능이 향상되는지 확인해 보겠습니다. 또한 모든 추천 지수에 대해 '실행 계획'을 시도 할 수 있습니다. T3에서

에 인덱스를 생성

, T2에서

  • 의 ColumnName &의 ColumnName
  • 위 T2

P.S.에 ColumnName2에 또 하나의 인덱스를 추가 도움이되지 않은 경우 인덱스는 업데이트/삽입/삭제에 영향을 미칩니다. 자세한 정보는 here입니다.

편집 - ARG1 @ 것입니다 - 그것은 당신이 찾고있는 것을 알고 도움이 될

+0

Select 문만 사용하면 성능이 향상되지 않습니까? 업데이트 또는 삽입 (읽기 전용)이 없기 때문입니다. – michael24B

+0

대부분 읽기 전용 인 경우 인덱스를 추가하면 select 문의 성능이 확실히 향상됩니다. – Baga

+0

나는 무엇인가 놓쳤다, 미안. 당신이 코드를 다시 작성하면 뭔가를 놓쳤습니다. 내 게시물의 현재 코드를 확인하십시오. 시간 내 주셔서 감사합니다. 정말 고맙습니다. – michael24B

관련 문제