시스템 뷰의 인덱스에 대한 정보를 얻는 방법.시스템 뷰의 인덱스에 대한 정보를 얻는 방법
나는이 쿼리를 작성하고 실행 계획을 살펴 본다. 인덱스 스캔을 사용하는 것을 보았다.
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'
시스템 뷰의 인덱스에 대한 정보를 얻는 방법.시스템 뷰의 인덱스에 대한 정보를 얻는 방법
나는이 쿼리를 작성하고 실행 계획을 살펴 본다. 인덱스 스캔을 사용하는 것을 보았다.
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'
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')
사용
인덱스가 추구 얻으려면.WHERE OBJECT_NAME(object_id)='Mytbl'
는 시크 조건이 아니다.
+1, 잘 구성된 응답 – Lamak
체크 아웃은 시스템 뷰에서 인덱스 정보를 얻는 방법에 대해 이야기하지 않습니다이 게시물 http://blog.sqlauthority.com/2009/08/24/sql-server-index-seek-vs-index-scan-diffefence-and-usage-a-simple-note/을하지만, 인덱스 스캔은 인덱스를 통해 사용할 수 있습니다 이유가 추구하는 이유를 설명한다.
왜 신경 쓰시겠습니까? 시스템보기는 시스템보기입니다. 최적화 할 필요가 없습니다! –
네. 제 개인 정보를 원합니다. – Arian
+1 나는 검색을 스캔으로 대체하는 것이 가장 합리적이라고 생각합니다. –