0

特定のビューに関連付けられたインデックスのみを指すように、次のスクリプトを修正しようとしていますvw_foo。これは可能ですか?

SELECT name AS index_name,
STATS_DATE(OBJECT_ID, index_id) AS StatsUpdated
FROM sys.indexes

編集

「関連付けられている」とは、ビューの作成に使用される基になるテーブルのインデックスを意味します

4

2 に答える 2

1

既存の回答はおそらく名前の確認に向かっていましsys.objectsたが、決してそれを行いませんでした。OBJECT_ID()ただし、関数を使用するとobject_idクリーンな方法でを取得できるため、とにかくそうする必要はありません。

SELECT name AS index_name,
STATS_DATE(OBJECT_ID, index_id) AS StatsUpdated
FROM sys.indexes
WHERE object_id = OBJECT_ID('vw_foo')
于 2013-04-15T09:34:15.903 に答える
1

おそらく、それはあなたに役立つでしょう-

SELECT 
      SCHEMA_NAME(o.[schema_id]) + '.' + o.name
    , s.name
    , statistics_update_date = STATS_DATE(o.[object_id], stats_id) 
FROM sys.objects o
JOIN sys.stats s ON o.[object_id] = s.[object_id]
WHERE o.[type] = 'V' AND o.name = 'vw_foo'

DECLARE @table_name SYSNAME
SELECT @table_name = 'dbo.vw_foo'

編集済み

「関連付けられた」と言うとき、ビューで使用されるテーブルのインデックスを意味します

このクエリは、指定されたテーブルが使用されているビューのリストを返します + 使用されているインデックスに関する追加情報を表示します -

SELECT 
      o.table_name
    , b.view_name
    , i.name
    , stast_updates = STATS_DATE(i.[object_id], i.index_id)
    , dm_ius.last_user_seek
    , dm_ius.last_user_scan
    , dm_ius.last_user_lookup
    , dm_ius.last_user_update
    , dm_ius.user_updates
    , dm_ius.user_lookups
    , dm_ius.user_scans
    , dm_ius.user_seeks
FROM (
    SELECT
          table_name = s.name + '.' + o.name
        , o.[object_id]
    FROM sys.objects o
    JOIN sys.schemas s ON o.[schema_id] = s.[schema_id]
    WHERE o.[type] = 'U'
        AND s.name + '.' + o.name = @table_name
) o
JOIN sys.indexes i ON o.[object_id] = i.[object_id]
                  AND i.[type] > 0
                  AND i.is_disabled = 0
                  AND i.is_hypothetical = 0
LEFT JOIN sys.dm_db_index_usage_stats dm_ius ON i.index_id = dm_ius.index_id AND dm_ius.[object_id] = i.[object_id]  
OUTER APPLY (
    SELECT 
          view_name = r.referencing_schema_name + '.' + r.referencing_entity_name
        , r.referencing_id
    FROM sys.dm_sql_referencing_entities (o.table_name, 'OBJECT') r
    JOIN sys.objects o2 ON r.referencing_id = o2.[object_id]
    WHERE o2.[type] = 'V'
) b
WHERE b.view_name IS NOT NULL
于 2013-04-15T09:29:45.687 に答える