星期日, 11月 22, 2009

資料庫索引

設計準則(減少IO存取次數)
 1.經常被用來搜尋資料記錄的欄位
 2.Primary key(sqlserver自動建立)
 3.套用unique限制條件的欄位(sqlserver自動建立)
 4.Foreign key定義作為外部索引鍵欄位?
 5.於查詢中被用來連結資料表的欄位
 6.用來作排序基準的欄位
  -不要替超過20bytes的欄位作索引(索引體佔太多空間 ex.地址)
  -很少變動,經幣被查詢
 7.索引需維設,減少使用頻率低的索引,以免耗維護成本
 8.內容重複率高的欄位效益低
 9.資料記錄多,存取效率才會明顯,反過來說少反而慢(path)
  -利用query analyzer執行,檢視execution plan與執行時間來測
  -不斷嚐試、不停修正

索引的類型
 1.Clustered Index(簇集索引) -範圍(日期,編號)
 改變資料表記錄存放次序,並與簇集索引中錄值次序相同
  -ex. between 100 and 200=>以昇冪來排就直接抓出其間的100筆
  每個table只能有一個clustered index

 2.NonClustered index(非簇集索引) -特定值(姓名,電話)

沒有留言: