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

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

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

      sqlserver查看缺失的索引

      查看缺失索引的sql

      SELECT  TOP 30 
              [Total Cost]  = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0) 
              , avg_user_impact
              , TableName = statement
              , [EqualityUsage] = equality_columns 
              , [InequalityUsage] = inequality_columns
              , [Include Cloumns] = included_columns
      FROM        sys.dm_db_missing_index_groups g 
      INNER JOIN    sys.dm_db_missing_index_group_stats s 
             ON s.group_handle = g.index_group_handle 
      INNER JOIN    sys.dm_db_missing_index_details d 
             ON d.index_handle = g.index_handle
      ORDER BY [Total Cost] DESC;

       

       

      SQLSERVER如何查看索引缺失

      當大家發現數據庫查詢性能很慢的時候,大家都會想到加索引來優化數據庫查詢性能,

      但是面對一個復雜的SQL語句,找到一個優化的索引組合對人腦來講,真的不是一件很簡單的事。

      好在SQLSERVER提供了兩種“自動”功能,給你建議,該怎么調整索引

      第一種是使用DMV

      第二種是使用DTA (database engine tuning advisor) 數據庫引擎優化顧問

      這篇文章主要講第一種


      SQL2005以后,在SQLSERVER對任何一句語句做編譯的時候,都會去評估一下,

      這句話是不是缺少什么索引的支持,如果他認為是,他還會預估,如果有這麼一個索引

      他的性能能提高多少

       

      SQLSERVER有幾個動態管理視圖

      sys.dm_db_missing_index_details

      sys.dm_db_missing_index_groups

      sys.dm_db_missing_index_group_stats

      sys.dm_db_missing_index_columns(index_handle)

       


       

      sys.dm_db_missing_index_details

      這個DMV記錄了當前數據庫下所有的missing index的信息,他針對的是SQLSERVER從啟動以來所有運行的語句,

      而不是針對某一個查詢。DBA可以看看,哪些表格SQLSERVER對他是最有“意見”的

      以下是這個DMV的各個字段的解釋:

      1、index_handle:標識特定的缺失索引。該標識符在服務器中是唯一的。index_handle 是此表的密鑰

      2、database_id :標識帶有缺失索引的表所駐留的數據庫

      3、object_id :標識索引缺失的表

      4、equality_columns:構成相等謂詞的列的逗號分隔列表 即哪個字段缺失了索引會在這里列出來(簡單來講就是where 后面的篩選字段),

      謂詞的形式如下:table.column =constant_value

      5、inequality_columns :構成不等謂詞的列的逗號分隔列表,例如以下形式的謂詞:table.column > constant_value “=”之外的任何比較運算符都表示不相等。

      6、included_columns:用于查詢的涵蓋列的逗號分隔列表(簡單來講就是 select 后面的字段)。

      7、statement:索引缺失的表的名稱

      比如下面這個查詢結果

      那么應該創建這樣的索引

      1 CREATE INDEX idx_SalesOrderDetail_test_ProductID_IncludeIndex ON SalesOrderDetail_test(ProductID) INCLUDE(SalesOrderID) 

      在ProductID上創建索引,SalesOrderID作為包含性列的索引

       

      注意事項:

      由 sys.dm_db_missing_index_details 返回的信息會在查詢優化器優化查詢時更新,因而不是持久化的。

      缺失索引信息只保留到重新啟動 SQL Server 前。如果數據庫管理員要在服務器回收后保留缺失索引信息,

      則應定期制作缺失索引信息的備份副本

       


       

      sys.dm_db_missing_index_columns(index_handle)

      返回與缺少索引(不包括空間索引)的數據庫表列有關的信息,sys.dm_db_missing_index_columns 是一個動態管理函數

      字段解釋

      index_handle:唯一地標識缺失索引的整數。

       


       

      sys.dm_db_missing_index_groups

       

      返回有關特定缺失索引組中包含的缺失索引(不包括空間索引)的信息

       


      sys.dm_db_missing_index_group_stats

      返回缺失索引組的摘要信息,不包括空間索引

      這個視圖說白了就是預估有這麼一個索引,他的性能能提高多少

      有一個字段比較重要:

      avg_user_impact: 實現此缺失索引組后,用戶查詢可能獲得的平均百分比收益。該值表示如果實現此缺失索引組,則查詢成本將按此百分比平均下降。

      就是說,增加了這個缺失索引,性能可以提高的百分比

       

      下面是MSDN給出的示例,缺失索引組句柄為 2

      復制代碼
      復制代碼
       1 --查詢提供缺失索引的數據庫、架構和表的名稱。它還提供應該用于索引鍵的列的名稱
       2 USE [AdventureWorks]
       3 GO
       4 SELECT migs.group_handle, mid.*
       5 FROM sys.dm_db_missing_index_group_stats AS migs
       6 INNER JOIN sys.dm_db_missing_index_groups AS mig
       7     ON (migs.group_handle = mig.index_group_handle)
       8 INNER JOIN sys.dm_db_missing_index_details AS mid
       9     ON (mig.index_handle = mid.index_handle)
      10 WHERE migs.group_handle = 2
      復制代碼
      復制代碼

       

      示例代碼:

      復制代碼
      復制代碼
      1 USE [AdventureWorks] --要查詢索引缺失的數據庫
      2 GO
      3 SELECT * FROM sys.[dm_db_missing_index_details]
      4 SELECT * FROM sys.[dm_db_missing_index_groups]
      5 SELECT * FROM sys.[dm_db_missing_index_group_stats]
      6 SELECT * FROM sys.[dm_db_missing_index_columns](1) --1 :1是根據dm_db_missing_index_details查出來的
      復制代碼
      復制代碼

       

      我估計XX大俠做的SQLSERVER索引優化器也使用了"sys.dm_db_missing_index_details" 這個DMV

      剛才看了一下,好像有錯別字:Total Cost不是Totol Cost

      暫時不知道Total Cost跟Improvement Measure怎麼算出來的

       

      注意:

      最后大家還需要注意一下,雖然這些DMV給出的建議還是比較合理的。

      但是,DBA還是需要去確認一下建議。因為這個建議完全是根據語句本身給出的,

      沒有考慮對其他語句的影響,也沒有考慮維護索引的成本,所以是很片面的。

      其準確性,也要再確認一下

      posted @ 2025-04-20 11:18  愛生活,愛代碼  閱讀(88)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品久久一区二区三区| 亚洲av无码片在线播放| 亚洲av鲁丝一区二区三区黄| 日韩人妻无码一区二区三区99| 国产精品户外野外| 97亚洲熟妇自偷自拍另类图片| 九九热视频在线观看视频| 拍摄av现场失控高潮数次| 久久精品亚洲精品国产区| 亚洲国产欧美一区二区好看电影 | 在线a级毛片无码免费真人| 久热这里有精品视频播放| 精品免费看国产一区二区| 广德县| 亚洲日本乱码熟妇色精品 | 婷婷色综合成人成人网小说| 免费无码成人AV片在线| 日韩精品一区二区亚洲专区| 国产精品自在自线免费观看| 动漫精品中文无码卡通动漫| 日韩人妻中文字幕精品| 呼伦贝尔市| 中文字幕日韩区二区三区| 免青青草免费观看视频在线| 亚洲少妇人妻无码视频| 欧美人成精品网站播放| 精品久久久久久亚洲综合网| 国内精品九九久久久精品| 乱妇乱女熟妇熟女网站| 欧美交a欧美精品喷水| 亚洲高清av一区二区| 久久久久人妻一区二区三区| 国内精品伊人久久久影视| 九九热精品视频免费在线| 国产高清av首播原创麻豆| 无码丰满人妻熟妇区| A级毛片100部免费看| 亚洲激情av一区二区三区| 少妇太爽了在线观看免费视频| 少妇人妻偷人偷人精品| 免费A级毛片樱桃视频|