Sql Server索引

1.創建索引時遵循一般原則
  在需要經常搜索的列上面創建索引
  在主鍵上創建索引
  在外鍵上創建索引
  在經常用於Where子句的列上創建索引
  在經常需要排序的列上創建索引
  對於數據類型爲text,image,bit的列不應該增加索引
  當需要Update性能遠高於Select性能時不應該增加索引
2.索引分類
聚集索引:物理存儲“按照”索引排序;每個表“只能有一個”聚集索引;
非聚集索引:物理存儲“不按照”索引排序,每個表可以有“多個”非聚集索引;
唯一索引:要求創建索引的關鍵字段值在表中不能有重複值;
主鍵索引:爲表定義一個主鍵將自動創建一個主鍵索引;(主鍵索引是唯一索引的特殊類型)
複合索引:對錶創建的索引是基於過個字段對錶中的記錄排序的;
FILLFACTOR(填充因子):0~100範圍內的值,指示索引頁填滿的空間所佔的百分比。(一般很少指定)
3.創建索引3種方法
(1)用企業管理器創建索引;
(2)利用Transact-SQL語句創建索引;
(3)利用索引優化嚮導創建索引;
第一種:用企業管理器創建索引(略)
第二種:利用Transact-SQL語句創建索引
語法:
CREATE [索引類型] INDEX 索引名稱
ON 表名(列名)
WITH FILLFACTOR = 填充因子值0~100
GO
/*實例*/
USE 庫名
GO
IF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME='IX_TEST_TNAME')--檢測是否已經存在IX_TEST_TNAME索引
DROP INDEX TEST.IX_TEST_TNAME--如果存在則刪除
--創建索引
CREATE NONCLUSTERED INDEX IX_TEST_TNAME --創建一個非聚集索引
ON TEST(TNAME)  --爲TEST表的TNAME字段創建索引
WITH FILLFACTOR = 30 --填充因子爲30%
GO
SELECT * FROM TEST(INDEX = IX_TEST_TNAME) WHERE TNAME = 'A' --指定按‘IX_TEST_TNAME’索引查詢
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
其語法形式如下:
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 ]

CREATE INDEX命令創建索引各參數說明如下:
UNIQUE:用於指定爲表或視圖創建唯一索引,即不允許存在索引值相同的兩行。
CLUSTERED:用於指定創建的索引爲聚集索引。
NONCLUSTERED:用於指定創建的索引爲非聚集索引。
index_name:用於指定所創建的索引的名稱。
table:用於指定創建索引的表的名稱。
view:用於指定創建索引的視圖的名稱。
ASC|DESC:用於指定具體某個索引列的升序或降序排序方向。
Column:用於指定被索引的列。
PAD_INDEX:用於指定索引中間級中每個頁(節點)上保持開放的空間。
FILLFACTOR = fillfactor:用於指定在創建索引時,每個索引頁的數據佔索引頁大小的百分比,fillfactor的值爲1到100。
IGNORE_DUP_KEY:用於控制當往包含於一個唯一聚集索引中的列中插入重複數據時SQL Server所作的反應。
DROP_EXISTING:用於指定應刪除並重新創建已命名的先前存在的聚集索引或者非聚集索引。
STATISTICS_NORECOMPUTE:用於指定過期的索引統計不會自動重新計算。
SORT_IN_TEMPDB:用於指定創建索引時的中間排序結果將存儲在 tempdb 數據庫中。
ON filegroup:用於指定存放索引的文件組。

例子1:爲表employees創建了一個唯一聚集索引,其程序清單如下:

CREATE UNIQUE CLUSTERED INDEX number_ind

   ON employees (number)

with

   pad_index,

   fillfactor=20,

   ignore_dup_key,

   drop_existing,

   statistics_norecompute

例子2:爲表employees創建了一個複合索引,其程序清單如下:

create index employees_cpl_ind

on employees(name,age)

with

   pad_index,

   fillfactor=50

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章