婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQLSERVER如何查看索引缺失及DMV使用介紹

SQLSERVER如何查看索引缺失及DMV使用介紹

熱門標簽:怎么給高德做地圖標注 北京400電話辦理多少錢 承德地圖標注公司名需要花錢嗎 榕城市地圖標注 浙江穩定外呼系統供應商 慶陽地圖標注 美團地圖標注商戶認證注冊 咸陽電腦外呼系統運營商 電銷外呼系統軟件功能

當大家發現數據庫查詢性能很慢的時候,大家都會想到加索引來優化數據庫查詢性能,但是面對一個復雜的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:索引缺失的表的名稱

比如下面這個查詢結果

那么應該創建這樣的索引

復制代碼 代碼如下:

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

復制代碼 代碼如下:

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

示例代碼:

復制代碼 代碼如下:

USE [AdventureWorks] --要查詢索引缺失的數據庫
GO
SELECT * FROM sys.[dm_db_missing_index_details]
SELECT * FROM sys.[dm_db_missing_index_groups]
SELECT * FROM sys.[dm_db_missing_index_group_stats]
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還是需要去確認一下建議。因為這個建議完全是根據語句本身給出的,

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

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

上面幾個DMV的字段解釋,大家可以看一下MSDN,非常詳細

sys.dm_db_missing_index_group_stats
msdn:http://msdn.microsoft.com/zh-cn/library/ms345421.aspx

sys.dm_db_missing_index_groups
msdn:http://msdn.microsoft.com/zh-cn/library/ms345407.aspx

sys.dm_db_missing_index_columns([sql_handle])
msdn:http://msdn.microsoft.com/zh-cn/library/ms345364.aspx

sys.dm_db_missing_index_details
msdn:http://msdn.microsoft.com/zh-cn/library/ms345434.aspx

您可能感興趣的文章:
  • 淺析SQL Server 聚焦索引對非聚集索引的影響
  • 淺述SQL Server的聚焦強制索引查詢條件和Columnstore Index
  • 淺析SQL Server的聚焦使用索引和查詢執行計劃
  • 詳解sqlserver查詢表索引
  • SQL SERVER 2008 R2 重建索引的方法
  • SQLSERVER全文目錄全文索引的使用方法和區別講解
  • SQL_Server全文索引的使用實例演示
  • SQL_Server全文索引的用法解析
  • SQLSERVER對索引的利用及非SARG運算符認識
  • sqlserver索引的原理及索引建立的注意事項小結
  • sqlserver2005自動創建數據表和自動添加某個字段索引
  • SQL Server 數據庫索引其索引的小技巧
  • 詳解SQL Server的聚焦過濾索引

標簽:江蘇 拉薩 上海 重慶 新鄉 昭通 貴州 呼和浩特

巨人網絡通訊聲明:本文標題《SQLSERVER如何查看索引缺失及DMV使用介紹》,本文關鍵詞  SQLSERVER,如何,查看,索引,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQLSERVER如何查看索引缺失及DMV使用介紹》相關的同類信息!
  • 本頁收集關于SQLSERVER如何查看索引缺失及DMV使用介紹的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 肃南| 金湖县| 偃师市| 托克托县| 桦川县| 屯门区| 轮台县| 古浪县| 清新县| 鹤山市| 安新县| 乐东| 汝南县| 双桥区| 达日县| 黄大仙区| 延吉市| 山丹县| 邵阳县| 谷城县| 山东| 正镶白旗| 铅山县| 成安县| 土默特左旗| 宣城市| 封丘县| 沽源县| 大同县| 石景山区| 衡南县| 共和县| 栾川县| 扎赉特旗| 兴宁市| 酉阳| 马边| 应用必备| 山东省| 侯马市| 商都县|