<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      有關索引的DMV

      有關索引的DMV

      1.查看那些被大量更新,卻很少被使用的索引

      SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
      SELECT                                                   
          DB_NAME() AS DatabaseName
          , SCHEMA_NAME(o.Schema_ID) AS SchemaName
          , OBJECT_NAME(s.[object_id]) AS TableName
          , i.name AS IndexName
          , s.user_updates
          , s.system_seeks + s.system_scans + s.system_lookups
                                AS [System usage]
      INTO #TempUnusedIndexes
      FROM   sys.dm_db_index_usage_stats s
      INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]
          AND s.index_id = i.index_id
      INNER JOIN sys.objects o ON i.object_id = O.object_id   
      WHERE 1=2
      EXEC sp_MSForEachDB 'USE [?];                          
      INSERT INTO #TempUnusedIndexes
      SELECT TOP 20
          DB_NAME() AS DatabaseName
          , SCHEMA_NAME(o.Schema_ID) AS SchemaName
          , OBJECT_NAME(s.[object_id]) AS TableName
          , i.name AS IndexName
          , s.user_updates
          , s.system_seeks + s.system_scans + s.system_lookups
                                               AS [System usage]
      FROM   sys.dm_db_index_usage_stats s
      INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]
          AND s.index_id = i.index_id
      INNER JOIN sys.objects o ON i.object_id = O.object_id   
      WHERE s.database_id = DB_ID()
      AND OBJECTPROPERTY(s.[object_id], ''IsMsShipped'') = 0
      AND s.user_seeks = 0
          AND s.user_scans = 0
          AND s.user_lookups = 0
      AND i.name IS NOT NULL
      ORDER BY s.user_updates DESC'                           
      SELECT TOP 20 * FROM #TempUnusedIndexes ORDER BY [user_updates] DESC
      DROP TABLE #TempUnusedIndexes

       

      結果如圖:

      1

       

      這類索引應該被Drop掉

       

       

      最高維護代價的索引

      SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
      SELECT                                                    
          DB_NAME() AS DatabaseName
          , SCHEMA_NAME(o.Schema_ID) AS SchemaName
          , OBJECT_NAME(s.[object_id]) AS TableName
          , i.name AS IndexName
          , (s.user_updates ) AS [update usage]
          , (s.user_seeks + s.user_scans + s.user_lookups) AS [Retrieval usage]
          , (s.user_updates) -
            (s.user_seeks + s.user_scans + s.user_lookups) AS [Maintenance cost]
          , s.system_seeks + s.system_scans + s.system_lookups AS [System usage]
          , s.last_user_seek
          , s.last_user_scan
          , s.last_user_lookup
      INTO #TempMaintenanceCost
      FROM   sys.dm_db_index_usage_stats s
      INNER JOIN sys.indexes i ON  s.[object_id] = i.[object_id]
          AND s.index_id = i.index_id
      INNER JOIN sys.objects o ON i.object_id = O.object_id   
      WHERE 1=2
      EXEC sp_MSForEachDB 'USE [?];                             
      INSERT INTO #TempMaintenanceCost
      SELECT TOP 20
          DB_NAME() AS DatabaseName
          , SCHEMA_NAME(o.Schema_ID) AS SchemaName
          , OBJECT_NAME(s.[object_id]) AS TableName
          , i.name AS IndexName
          , (s.user_updates ) AS [update usage]
          , (s.user_seeks + s.user_scans + s.user_lookups)
                          AS [Retrieval usage]
          , (s.user_updates) -
      (s.user_seeks + user_scans +
                               s.user_lookups) AS [Maintenance cost]
          , s.system_seeks + s.system_scans + s.system_lookups AS [System usage]
          , s.last_user_seek
          , s.last_user_scan
          , s.last_user_lookup
      FROM   sys.dm_db_index_usage_stats s
      INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]
          AND s.index_id = i.index_id
      INNER JOIN sys.objects o ON i.object_id = O.object_id   
      WHERE s.database_id = DB_ID()
          AND i.name IS NOT NULL
          AND OBJECTPROPERTY(s.[object_id], ''IsMsShipped'') = 0
          AND (s.user_seeks + s.user_scans + s.user_lookups) > 0
      ORDER BY [Maintenance cost] DESC'                       
      SELECT top 20 * FROM #TempMaintenanceCost ORDER BY [Maintenance cost] DESC
      DROP TABLE #TempMaintenanceCost

       

      結果如圖:

      2

       

      Maintenance cost高的應該被Drop掉

       

      使用頻繁的索引

      --使用頻繁的索引
      SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
      SELECT                                          
          DB_NAME() AS DatabaseName
              , SCHEMA_NAME(o.Schema_ID) AS SchemaName
          , OBJECT_NAME(s.[object_id]) AS TableName
          , i.name AS IndexName
          , (s.user_seeks + s.user_scans + s.user_lookups) AS [Usage]
          , s.user_updates
          , i.fill_factor
      INTO #TempUsage
      FROM sys.dm_db_index_usage_stats s
      INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]
          AND s.index_id = i.index_id
      INNER JOIN sys.objects o ON i.object_id = O.object_id   
      WHERE 1=2
      EXEC sp_MSForEachDB 'USE [?];                              
      INSERT INTO #TempUsage
      SELECT TOP 20
          DB_NAME() AS DatabaseName
          , SCHEMA_NAME(o.Schema_ID) AS SchemaName
          , OBJECT_NAME(s.[object_id]) AS TableName
          , i.name AS IndexName
          , (s.user_seeks + s.user_scans + s.user_lookups) AS [Usage]
          , s.user_updates
          , i.fill_factor
      FROM   sys.dm_db_index_usage_stats s
      INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]
                  AND s.index_id = i.index_id
      INNER JOIN sys.objects o ON i.object_id = O.object_id   
      WHERE s.database_id = DB_ID()
          AND i.name IS NOT NULL
          AND OBJECTPROPERTY(s.[object_id], ''IsMsShipped'') = 0
      ORDER BY [Usage] DESC'                                   
      SELECT TOP 20 * FROM #TempUsage ORDER BY [Usage] DESC
      DROP TABLE #TempUsage

       

      結果如圖

      3

       

      這類索引需要格外注意,不要在優化的時候干掉

       

       

       

      碎片最多的索引


      SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
      SELECT                                                    
          DB_NAME() AS DatbaseName
          , SCHEMA_NAME(o.Schema_ID) AS SchemaName
          , OBJECT_NAME(s.[object_id]) AS TableName
          , i.name AS IndexName
          , ROUND(s.avg_fragmentation_in_percent,2) AS [Fragmentation %]
      INTO #TempFragmentation
      FROM sys.dm_db_index_physical_stats(db_id(),null, null, null, null) s
      INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]
          AND s.index_id = i.index_id
      INNER JOIN sys.objects o ON i.object_id = O.object_id   
      WHERE 1=2
      EXEC sp_MSForEachDB 'USE [?];                               
      INSERT INTO #TempFragmentation
      SELECT TOP 20
          DB_NAME() AS DatbaseName
          , SCHEMA_NAME(o.Schema_ID) AS SchemaName
          , OBJECT_NAME(s.[object_id]) AS TableName
          , i.name AS IndexName
          , ROUND(s.avg_fragmentation_in_percent,2) AS [Fragmentation %]
      FROM sys.dm_db_index_physical_stats(db_id(),null, null, null, null) s
      INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]
          AND s.index_id = i.index_id
      INNER JOIN sys.objects o ON i.object_id = O.object_id   
      WHERE s.database_id = DB_ID()
        AND i.name IS NOT NULL
        AND OBJECTPROPERTY(s.[object_id], ''IsMsShipped'') = 0
      ORDER BY [Fragmentation %] DESC'                         
      SELECT top 20 * FROM #TempFragmentation ORDER BY [Fragmentation %] DESC
      DROP TABLE #TempFragmentation

       

      結果如下:

      4

       

      這類索引需要Rebuild,否則會嚴重拖累數據庫性能

       

      自上次SQL Server重啟后,找出完全沒有使用的索引

      SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
      SELECT                                                
          DB_NAME() AS DatbaseName
          , SCHEMA_NAME(O.Schema_ID) AS SchemaName
          , OBJECT_NAME(I.object_id) AS TableName
          , I.name AS IndexName
      INTO #TempNeverUsedIndexes
      FROM sys.indexes I INNER JOIN sys.objects O ON I.object_id = O.object_id
      WHERE 1=2
      EXEC sp_MSForEachDB 'USE [?];                          
      INSERT INTO #TempNeverUsedIndexes
      SELECT
          DB_NAME() AS DatbaseName
          , SCHEMA_NAME(O.Schema_ID) AS SchemaName
          , OBJECT_NAME(I.object_id) AS TableName
          , I.NAME AS IndexName
      FROM sys.indexes I INNER JOIN sys.objects O ON I.object_id = O.object_id
      LEFT OUTER JOIN sys.dm_db_index_usage_stats S ON S.object_id = I.object_id
              AND I.index_id = S.index_id
              AND DATABASE_ID = DB_ID()
      WHERE OBJECTPROPERTY(O.object_id,''IsMsShipped'') = 0
        AND I.name IS NOT NULL
        AND S.object_id IS NULL'
      SELECT * FROM #TempNeverUsedIndexes                        
      ORDER BY DatbaseName, SchemaName, TableName, IndexName
      DROP TABLE #TempNeverUsedIndexes

       

      結果如圖:

      5

       

      這類索引應該小心對待,不能一概而論,要看是什么原因導致這種問題

       

      查看索引統計的相關信息

       

      SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
      SELECT
          ss.name AS SchemaName
          , st.name AS TableName
          , s.name AS IndexName
          , STATS_DATE(s.id,s.indid) AS 'Statistics Last Updated'
          , s.rowcnt AS 'Row Count'
          , s.rowmodctr AS 'Number Of Changes'
          , CAST((CAST(s.rowmodctr AS DECIMAL(28,8))/CAST(s.rowcnt AS
      DECIMAL(28,2)) * 100.0)
                                   AS DECIMAL(28,2)) AS '% Rows Changed'
      FROM sys.sysindexes s
      INNER JOIN sys.tables st ON st.[object_id] = s.[id]
      INNER JOIN sys.schemas ss ON ss.[schema_id] = st.[schema_id]
      WHERE s.id > 100
        AND s.indid > 0
        AND s.rowcnt >= 500
      ORDER BY SchemaName, TableName, IndexName


      結果如下:

      6

       

      因為查詢計劃是根據統計信息來的,索引的選擇同樣取決于統計信息,所以根據統計信息更新的多寡可以看出數據庫的大體狀況,20%的自動更新對于大表來說非常慢。

      posted @ 2012-05-17 11:57  CareySon  閱讀(2193)  評論(8)    收藏  舉報
      主站蜘蛛池模板: 国产精品一区二区黄色片| 国产三级精品福利久久| 亚洲性一交一乱一伦视频| 2021国产成人精品久久 | 一二三四日本高清社区5| 亚洲女女女同性video| 国产成人精品视频不卡| 波多野结衣美乳人妻hd电影欧美 | 亚洲永久一区二区三区在线| 精品卡通动漫亚洲AV第一页| 精人妻无码一区二区三区| 精品国产乱码久久久久APP下载| 国产精品无码无需播放器| 亚洲色最新高清AV网站| 激情久久av一区二区三区| 亚洲综合在线日韩av| 大香j蕉75久久精品免费8| 久久国产乱子伦免费精品无码| 亚洲精品国产免费av| 91精品国产午夜福利| av午夜福利一片免费看久久| 国产免费午夜福利在线播放| 亚洲精品一区久久久久一品av| 久久精品人人槡人妻人人玩av| 丰满无码人妻热妇无码区| 精品无码国产污污污免费| 视频一区二区三区四区不卡| 国产69精品久久久久人妻刘玥| 亚洲av影院一区二区三区| 青青草原网站在线观看| av中文字幕国产精品| 国产亚洲av手机在线观看| 国产成AV人片久青草影院| 中文字幕精品亚洲字幕成| 久久综合久久美利坚合众国| 在线无码免费看黄网站| 中文字幕亚洲人妻系列| 蜜桃无码一区二区三区| 国产精品一区二区麻豆蜜桃| 国产在线视频www色| 国产精品第一页一区二区|