2011-03-28 6 views
1

시스템 뷰의 인덱스에 대한 정보를 얻는 방법.시스템 뷰의 인덱스에 대한 정보를 얻는 방법

나는이 쿼리를 작성하고 실행 계획을 살펴 본다. 인덱스 스캔을 사용하는 것을 보았다.

SELECT OBJECT_NAME(OBJECT_ID) TableName, st.row_count 
FROM sys.dm_db_partition_stats st 
WHERE index_id < 2 AND OBJECT_NAME(OBJECT_ID)='Mytbl' 

enter image description here

+0

왜 신경 쓰시겠습니까? 시스템보기는 시스템보기입니다. 최적화 할 필요가 없습니다! –

+0

네. 제 개인 정보를 원합니다. – Arian

+1

+1 나는 검색을 스캔으로 대체하는 것이 가장 합리적이라고 생각합니다. –

답변

2
select i.name as idx_name, 
     i.type_desc, 
     i.is_unique, 
     ac.name as col_name, 
     c.key_ordinal, 
     c.is_descending_key, 
     c.is_included_column 
from sys.indexes i 
     join sys.all_objects a 
     on a.object_id = i.object_id 
     join sys.index_columns c 
     on c.object_id = i.object_id 
      and c.index_id = i.index_id 
     join sys.all_columns ac 
     on ac.object_id = i.object_id 
      and c.column_id = ac.column_id 
where a.name = 'sysidxstats' 

반환

idx_name   type_desc  is_unique col_name key_ordinal is_descending_key is_included_column 
----------------- --------------- --------- ----------- ----------- ----------------- ------------------ 
clst    CLUSTERED  1   id   1   0     0 
clst    CLUSTERED  1   indid  2   0     0 
nc    NONCLUSTERED 1   name  1   0     0 
nc    NONCLUSTERED 1   id   2   0     0 

SELECT OBJECT_NAME(object_id) TableName, 
     st.row_count 
FROM sys.dm_db_partition_stats st 
WHERE index_id < 2 
     AND object_id = OBJECT_ID('Mytbl') 

사용

인덱스가 추구 얻으려면.

PLAN WITH SEEK

WHERE OBJECT_NAME(object_id)='Mytbl'는 시크 조건이 아니다.

+0

+1, 잘 구성된 응답 – Lamak

관련 문제