Как получить информацию об индексах системных представлений - PullRequest
1 голос
/ 28 марта 2011

Как я могу получить информацию об индексах системных представлений.

Я пишу этот запрос и смотрю план выполнения. Я видел, что он использовал сканирование индекса, а не поиск индекса. Кто-нибудь знает почему?

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

Ответы [ 2 ]

2 голосов
/ 28 марта 2011
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 голосов
/ 28 марта 2011

Ознакомьтесь с этим постом http://blog.sqlauthority.com/2009/08/24/sql-server-index-seek-vs-index-scan-diffefence-and-usage-a-simple-note/ в нем не говорится о том, как получить информацию об индексе из системных представлений, но объясняется, почему причины, по которым сканирование индекса может использоваться при поиске индекса.

...