程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQLServer 聚集索引優化方案

SQLServer 聚集索引優化方案

編輯:關於SqlServer

一、主鍵與聚集索引並不是一對一匹配的

一般情況下我們都認為,聚集索引和主鍵是相互匹配的,因為只要你在SQLServer表中定義了一個主鍵,那麼SQLServer會為這個主鍵自動添加聚集索引.但是,如果你先在表中基於任意一列建立聚集索引,然後再選擇另一列作為主鍵,這時,這個SQLServer將會基於這個主鍵建立一個唯一非聚集索引.

二、聚集索引會被應用到每個查詢中

一個SQLServer表內,最多只能有一個聚集索引,並且表中數據行存儲的位置由聚集索引來決定.表中非聚集索引與數據行的映射,是通過聚集索引來定位的.當聚集索引執行插入操作時,數據表中的行要進行移動,同時該表中所有非聚集索引要重新排列,這是非常消耗資源並且影響SQLServer響應速度的.

所以SQLServer表中的聚集索引一定要避免新添加數據時執行插入操作,保證表中新添加的數據是從索引的尾部追加的.這樣做可以保證聚集索引相對靜態,對非聚集索引的影響也會減小.

創建聚集索引時,要選擇那些數據會不斷增加的字段,最好的例子就是bbs發帖表中,帖子發布時間,這個字段中的數據是隨時間增長的,理論上講是不會重復的,最適合建立聚集索引.

如果你的聚集索引真的做到了不斷增加,那麼它的填充因子就應該是100%,這個數值越高,每個8KB大小的索引頁記錄的行數就越多,進行相同的掃描時IO、內存和CPU資源就用的越少,換句話說就是查詢效率更高.

三、聚集索引的數據類型位寬將影響查詢效率

聚集索引列的數據類型位寬越小,查詢效率越高,並且由於非聚集索引是依靠聚集索引來影射SQLServer表中數據行的,聚集索引的位寬必將影響表中所有非聚集索引的大小.通常適合作為聚集索引的類型包括:

Smallint,int,bigint,datetime和UNIQUEIDENTIFIER.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved