這是一篇關於SQLServer2008索引使用技巧的文章,下面就讓我們一起來學習一下吧。
微軟MVP及暢銷書《Hitchhiker's Guide SQL Server》的作者Bill Vaughn簡要給出了SQL Server 2008的索引使用技巧。該主題基於Kimberly Tripp和Paul Randall(這兩位是SQL Server高可用性和性能方面的專家)的建議。
下面是主要的建議:頁(page)密度優化行大小:SQL Server 2005(及後續版本)支持8k的列。這意味著一行可以超過80k大小。這有意義麼?哦,通常情況下沒有。對行大小的管理與效率同樣重要。
如何提高性能並充分利用空間呢?方法就是當8k的頁被多個行塞滿的時候,要確保幾乎沒有空間浪費。這意味著如果行大小超過(或者接近)4k時,一頁只適合一行,這樣該頁大約有4k的空間就浪費了。
第二個問題是索引頁的數量也必須增加以尋址這些頁。過濾的索引這是SQL Server 2008的新特性,它使我們可以向索引增加WHERE子句,這樣就可以將索引聚焦到大多數重要的行上。選擇性(Selectivity)選擇性:當查詢優化器(query optimizer,即QO)讀取SQL時,選擇性的程度決定了索引是否應該用來執行該操作。通過對索引的Statistics(或者“stats”,一個索引可以擁有一個或者多個stats)進行處理分析,QO可以作出決定。
基本上,它會權衡使用索引來遍歷選擇的行或者對表進行掃描這兩種方式。Kimberly采用的例子使這一切變得很明朗,但我們卻感到驚訝:“當行數(由查詢選擇的)大約是表中的數據頁的1/4時,索引並沒有起到什麼作用,這時對表進行掃描來獲取選擇的行效率更高。這通常發生在取出的行數不到表中總行數的5%的情況下...”
SQL Server 2005中關於索引統計、列選擇、索引碎片及鎖的標准實踐依然可用。Tripp和Randal也認為DTA, a.k.a. Data Engine Tuning Advisor是個有價值的工具。SQL Server 2008已經更新了DTA以提供新的特性,包括改進的工作量解析、增強的可伸縮性、多數據庫調校、通過dta命令行界面的改進腳本支持。
以上就是精品為大家分享的關於SQLServer2008索引使用技巧的文章。