2013-04-15 41 views

回答

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' 

EDITED

當我說「關聯」我的意思是對被認爲

該查詢返回的在使用指定表的視圖列表使用 表的索引+顯示了有關使用索引的其他信息 -

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 
+0

+1這樣一個完整的答案。我沒有管理員權限,因此「sys.dm_db_index_usage_stats」不可訪問;但在其他方面非常有用 – whytheq

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') 
+0

+1 ...但是是否可以提取視圖所使用的表上的索引? – whytheq

+1

@whytheq - 您可以使用['sys.sql_expression_dependencies']](http://msdn.microsoft.com/zh-cn/library/bb677315.aspx)從視圖到基表(可能通過其他視圖,函數,等等)。這個信息在複雜的依賴鏈中有多大用處,我不確定。 –

+0

我幾乎可以做一些有關查詢這些sys對象的教程 - 我有幾個隨機腳本,但是我不知道從哪裏開始使用這些腳本? – whytheq

相關問題