国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

如何識別真實和自動創建的索引?

2024-07-21 02:10:43
字體:
來源:轉載
供稿:網友

問:我發現sysindexes索引表中的很多條目并不是我自己創建的。聽說它們并不是真正的索引,而是sql server查詢優化器自動創建的統計。怎樣才能識別哪些是真正的索引,哪些是sql server自動創建的統計呢?

答:按照默認設置,如果表中的某列沒有索引,則sql server會自動為該列創建統計。然后,查詢優化器評估該列中數據分布范圍的統計信息,以選擇一個更為有效的查詢處理方案。分辨自動創建的統計很簡單,在sql server 7.0和sql server 2000中,自動創建的統計的前綴為_wa_sys。

您還可以使用indexproperty()函數的isautostatistics屬性來區分一個索引是真正的還是自動創建的統計,讓sql server優化器選擇需要創建的統計。您還可以為您管理的數據庫啟用“自動創建統計表”選項。

很多人忽略了下面的明顯的結論。自動創建統計的存在意味著某個真正的索引可能會從中受益。請考慮下列代碼的輸出:

use tempdb
go
if objectproperty(object_id('dbo.orders'), 'isusertable')=1
        drop table dbo.orders
go
select * into tempdb..orders from northwind..orders
go
select * from tempdb..orders where orderid = 10248
go
select * from tempdb..sysindexes where id = object_id('orders')
    and name like
'_wa_sys%'
go


該代碼在tempdb中復制northwind orders表,選擇一行,然后檢查sql server是否添加了一個統計。很顯然,該表沒有orderid列的索引,所以sql server自動創建了名為_wa_sys_orderid_58d1301d 的統計。orderid列統計表的存在表明northwind orders表將得益于附加的索引。

以下查詢顯示了為數據庫中每個用戶表自動創建的統計的數量,該數據庫至少有一個自動創建的統計。

select
     object_name(id) tablename
     ,count(*) numberofautostats
from
     sysindexes
where
       objectproperty(id, n'isusertable') = 1
       and indexproperty ( id , name , 'isautostatistics' ) = 1
group by
      object_name(id)
order by
      count(*) desc


并不是所有的統計都可被真正的索引所替代。在某些情況下,sql server會為一個表自動創建超過50個統計。很明顯,這些表的索引策略很差勁。對表及自動創建的與之相關聯的統計的快速記數可以幫助您確定哪些表需要索引。

—microsoft sql server開發團隊

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宿州市| 郑州市| 揭阳市| 信丰县| 育儿| 顺昌县| 施甸县| 阳曲县| 兰考县| 建德市| 武夷山市| 正宁县| 景谷| 南安市| 江陵县| 新乡市| 太保市| 富蕴县| 尖扎县| 平顶山市| 西林县| 古交市| 上栗县| 宜昌市| 万源市| 奎屯市| 砀山县| 杨浦区| 红安县| 庄河市| 大余县| 忻州市| 抚顺市| 蒲城县| 中卫市| 怀集县| 栾城县| 嘉善县| 正镶白旗| 年辖:市辖区| 那坡县|