2014-04-24 3 views
0

안녕하세요 뷰를 조인에서 고객을 사용하는 ID 조인했습니다. 그러나 CustomerNo에만 색인이 있지만 ID는 없습니다. 이 조인은 인덱스를 사용합니까?여러 열 뷰 조인의 테이블 인덱스

(제가 내가 그것을 설명하는 데 실패 믿는 보여 드리겠습니다) 보기이보기는 일부 동적 쿼리에서 사용되는 대부분의 조인에 CustomerNo를 사용하는 것이

Select T1.CustomerNo, T1.X, T1.Y, T2.Z 
from T1 inner join T2 on T1.Id = T2.Id 

같은 것입니다. 테이블 T1 ID 및 클러스터되지 않은 인덱스 (ID, CustomerNo)에 클러스터 된 인덱스가 있습니다.

쿼리가 CustomerNo의 뷰에 참가합니까? 아니면 CustomerNo에 별도의 인덱스를 추가해야합니까?

+0

실행 계획을 보면 필요한 모든 대답이 있습니다. –

+0

질문이 없습니다. 그들은 dinamically 생성됩니다. 나는 일반 원칙을 요구하고있다 –

답변

0

글쎄요. 옵티마이 저가 인덱스 선택은 카디널리티 및 술어 선택성을 비롯한 많은 요인에 의해 안내됩니다. 동일한 쿼리이지만 다른 매개 변수의 경우 옵티마이 저가 한 번 인덱스를 사용하는 실행 계획을 생성하고 다른 시간은 그렇지 않을 수 있습니다. 실제 계획을 확인해야합니다. 특정 인덱스를 사용했던 질의하는 관심이 있다면,이 역시 계획 캐시에서 발견 할 수있다, 또한

select text, cast(query_plan as xml) 
from sys.dm_exec_cached_plans 
cross apply sys.dm_exec_sql_text(plan_handle) 
cross apply sys.dm_exec_text_query_plan(plan_handle, 0, -1) 
-- add a filter on the text column to isolate the interesting queries only 

:

사용, 캐시에서이 쿼리를 계획을 잡아 (캐시 된 계획의 경우에만 해당)

declare @IndexName sysname 
set @IndexName = 'name_of_the_index'; 

with xmlnamespaces ('http://schemas.microsoft.com/sqlserver/2004/07/showplan' as p) 
select 
    db_name(dbid) + '.' + object_schema_name(objectid, dbid) + '.' + object_name(objectid, dbid) AS database_object 
    ,iobj.value('@Index','sysname') AS IndexName 
    ,qp.query_plan 
    ,iobj.query('.') AS IndexUsage 
from sys.dm_exec_cached_plans cp 
cross apply sys.dm_exec_query_plan(cp.plan_handle) qp 
cross apply query_plan.nodes('//p:RelOp') IndexScan(scan) 
cross apply scan.nodes('//p:Object') as IndexObject(iobj) 
where dbid = db_id() 
and iobj.value('@Index','nvarchar(max)') = QUOTENAME(@IndexName,'[') 

이 두 번째 쿼리에는 시간이 오래 걸리고 리소스가 부족할 수 있으므로주의해야합니다.

+0

고맙지 만, 나는 이것을 생산 환경에 적용 할 권한이 없다. 검색어는 규칙 기반 화면에서 사용자가 선택하는대로 아침에 배치 프로세스로 작동합니다. 이러한 상황에서 CustomerNo에만 추가 색인을 추가하면 더 안전 할 것이라고 나는 믿습니다. –

+0

모두 조인 전에 필터 최적화 여부에 따라 달라집니다. 절반 맹목적인 추측은 조인 열과 술어에 대해 별도의 색인을 작성하는 것입니다. (BTW, 당신도 테스트 환경에서 이러한 쿼리를 실행할 수 있습니다. 그냥 거기에 아침 배치를 실행) – dean

관련 문제