亚洲一区亚洲二区亚洲三区,国产成人高清在线,久久久精品成人免费看,999久久久免费精品国产牛牛,青草视频在线观看完整版,狠狠夜色午夜久久综合热91,日韩精品视频在线免费观看

如何識別真實和自動創(chuàng)建的索引? -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【www.ishadingyu.com - 電腦資料】

   

    本技巧摘自SQL Server雜志的一期,

如何識別真實和自動創(chuàng)建的索引?

。如需了解更多的技巧,請訪問SQL Server的使用技巧中心。

    :我發(fā)現(xiàn)sysindexes索引表中的很多條目并不是我自己創(chuàng)建的。聽說它們并不是真正的索引,而是SQL Server查詢優(yōu)化器自動創(chuàng)建的統(tǒng)計。怎樣才能識別哪些是真正的索引,哪些是SQL Server自動創(chuàng)建的統(tǒng)計呢?

    :按照默認設(shè)置,如果表中的某列沒有索引,則SQL Server會自動為該列創(chuàng)建統(tǒng)計。然后,查詢優(yōu)化器評估該列中數(shù)據(jù)分布范圍的統(tǒng)計信息,以選擇一個更為有效的查詢處理方案。分辨自動創(chuàng)建的統(tǒng)計很簡單,在SQL Server 7.0和SQL Server 2000中,自動創(chuàng)建的統(tǒng)計的前綴為_WA_Sys。

    您還可以使用INDEXPROPERTY()函數(shù)的IsAutoStatistics屬性來區(qū)分一個索引是真正的還是自動創(chuàng)建的統(tǒng)計,讓SQL Server優(yōu)化器選擇需要創(chuàng)建的統(tǒng)計。您還可以為您管理的數(shù)據(jù)庫啟用“自動創(chuàng)建統(tǒng)計表”選項。

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

    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 rderid = 10248

    GO

    SELECT * FROM tempdb..sysindexes WHERE id = object_id('orders')

    AND name LIKE

    '_wa_sys%'

    GO

    該代碼在tempdb中復(fù)制Northwind Orders表,選擇一行,然后檢查SQL Server是否添加了一個統(tǒng)計,

電腦資料

如何識別真實和自動創(chuàng)建的索引?》(http://www.ishadingyu.com)。很顯然,該表沒有OrderId列的索引,所以SQL Server自動創(chuàng)建了名為_WA_Sys_OrderID_58D1301D 的統(tǒng)計。OrderId列統(tǒng)計表的存在表明Northwind Orders表將得益于附加的索引。

    以下查詢顯示了為數(shù)據(jù)庫中每個用戶表自動創(chuàng)建的統(tǒng)計的數(shù)量,該數(shù)據(jù)庫至少有一個自動創(chuàng)建的統(tǒng)計。

    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

    并不是所有的統(tǒng)計都可被真正的索引所替代。在某些情況下,SQL Server會為一個表自動創(chuàng)建超過50個統(tǒng)計。很明顯,這些表的索引策略很差勁。對表及自動創(chuàng)建的與之相關(guān)聯(lián)的統(tǒng)計的快速記數(shù)可以幫助您確定哪些表需要索引。

    —Microsoft SQL Server開發(fā)團隊

最新文章