程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server數據庫技術(50)

SQL Server數據庫技術(50)

編輯:關於SqlServer

8.2.1 用CREATE INDEX 命令創建索引
CREATE INDEX 既可以創建一個可改變表的物理順序的簇索引,也可以創建提高查詢性能的非簇索引。其語法如下:
CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED]
INDEX index_name ON {table | vIEw } column [ ASC | DESC ] [,...n])
[WITH
[PAD_INDEX]
[ [, ] FILLFACTOR = fillfactor]
[ [, ] IGNORE_DUP_KEY]
[ [, ] DROP_EXISTING]
[ [, ] STATISTICS_NORECOMPUTE]
[ [, ] SORT_IN_TEMPDB ]
]
[ON filegroup]
各參數說明如下:

  • UNIQUE
    創建一個惟一索引,即索引的鍵值不重復。在列包含重復值時,不能建惟一索引。如要使用此選項,則應確定索引所包含的列均不允許NULL 值,否則在使用時會經常出錯。
  • CLUSTERED
    指明創建的索引為簇索引。如果此選項缺省,則創建的索引為非簇索引。
  • NONCLUSTERED
    指明創建的索引為非簇索引其索引。數據頁中包含了指向數據庫中實際的表數據頁的指針。
  • index_name
    指定所創建的索引的名稱。索引名稱在一個表中應是惟一的,但在同一數據庫或不同數據庫中可以重復。
  • table
    指定創建索引的表的名稱。必要時還應指明數據庫名稱和所有者名稱。
  • vIEw
    指定創建索引的視圖的名稱。視圖必須是使用SCHEMABINDING 選項定義過的,其具體信息請參見“視圖創建”章節。
  • ASC | DESC
    指定特定的索引列的排序方式。默認值是升序(ASC)。
  • column
    指定被索引的列。如果使用兩個或兩個以上的列組成一個索引,則稱為復合索引。一個索引中最多可以指定16 個列,但列的數據類型的長度和不能超過900 個字節。
  • PAD_INDEX
    指定填充索引的內部節點的行數,至少應大於等於兩行。PAD_INDEX 選項只有在FILLFACTOR 選項指定後才起作用。因為PAD_INDEX 使用與FILLFACTOR 相同的百分比。缺省時,SQL Server 確保每個索引頁至少有能容納一條最大索引行數據的空閒空間。如果FILLFACTOR 指定的百分比不夠容納一行數據S,QL Server 會自動內部更改百分比。
  • FILLFACTOR = fillfactor
    FILLFACTOR 稱為填充因子,它指定創建索引時,每個索引頁的數據占索引頁大小的百分比,fillfactor 的值為1 到100。它其實同時指出了索引頁保留的自由空間占索引頁大小的百分比。即100 - fillfactor。 對於那些頻繁進行大量數據插入或刪除的表在建索引時應該為將來生成的索引數據預留較大的空間,即將fillfactor 設得較小,否則,索引頁會因數據的插入而很快填滿,並產生分頁,而分頁會大大增加系統的開銷。但如果設得過小,又會浪費大量的磁盤空間,降低查詢性能。因此,對於此類表通常設一個大約為10 的fillfactor。 而對於數據不更改的、高並發的、只讀的表,fillfactor 可以設到95 以上乃至100。

    如果沒有指定此選項,SQL Server 默認其值為0 。0 是個特殊值,與其它小FILLFACTOR
    值(如:1,2)的意義不同,其葉節點頁被完全填滿,而在索引頁中還有一些空間。可以
    用存儲過程Sp_configure 來改變默認的FILLFACTOR 值。
  • IGNORE_DUP_KEY
    此選項控制了當往包含於一個惟一約束中的列中插入重復數據時SQL Server 所作的反應。當選擇此選項時,SQL Server 返回一個錯誤信息,跳過此行數據的插入,繼續執行下面的插入數據的操作:當沒選擇此選項時,SQL Server 不僅會返回一個錯誤信息,還會回滾(Rolls Back)整個INSERT 語句(關於回滾,請參見“數據庫更新”章節中的“事務”一節)。
  • DROP_EXISTING
    指定要刪除並重新創建簇索引。刪除簇索引會導致所有的非簇索引被重建,因為需要用行指針來替換簇索引鍵。如果再重建簇索引,那麼非簇索引又會再重建一次,以便用簇索引鍵來替換行指針。使用DROP_EXISTING 選項可以使非簇索引只重建一次。
  • STATISTICS_NORECOMPUTE
    指定分布統計不自動更新。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved