文法:
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’索引查詢
總結:
1.什麼是索引:資料庫中的索引是某個表中一列或多列值的集合和相應的指向表中物理標識這些值的資料頁的邏輯指標清單。
2.分類:
唯一索引(UNIQUE):不允許兩行具有相同的索引值(建立了唯一約束,系統將自動建立唯一索引)
主鍵索引:主鍵索引要求主鍵中的每個值是唯一的,(建立主鍵自動建立主鍵索引)
叢集索引(CLUSTERED):表中各行的物理順序與索引值的邏輯(索引)順序相同,表中只能包含一個叢集索引,主鍵列預設為叢集索引
非叢集索引(NONCLUSTERED):表中各行的物理順序與索引值的邏輯(索引)順序不匹配,表中可以有249個非叢集索引
3.建立索引的標準:用語頻繁搜尋的列;用語對資料進行排序的列
注意:如果表中僅有幾行,或列中只包含幾個不同的值,不推薦建立索引,因為SQL Server 在小型表中用索引搜尋資料所花的時間比逐行搜尋更長。
CREATE INDEX (SQL Server Compact Edition)
http://msdn.microsoft.com/zh-cn/library/ms345331(SQL.90).aspx
新增: 2006 年 4 月 14 日
在指定的表上建立索引。可以在表中輸入資料之前建立索引。
文法
|
CREATE [UNIQUE] [NONCLUSTERED] INDEX index_name ON table_name (column_name [ASC|DESC][,…n]) WITH (STATISTICS_NORECOMPUTE = { ON | OFF })] |
參數
術語 |
定義 |
UNIQUE |
在表上建立唯一索引。唯一索引是不允許其中任意兩行具有相同索引值的索引。 SQL Server 2005 Compact Edition (SQL Server Compact Edition) 在建立索引後將檢查是否存在重複的值(如果資料已存在),並在每次使用 INSERT 或 UPDATE 語句添加資料時執行該檢查操作。必須先消除重複值,然後才可對列建立唯一索引。如果存在重複的索引值,則將取消 CREATE INDEX 語句並返回錯誤。只能對定義為 NOT NULL 的列建立唯一索引。 如果存在唯一索引,則可能產生重複索引值的 UPDATE 或 INSERT 語句將復原,且 SQL Server Compact Edition 返回錯誤。即使 UPDATE 或 INSERT 語句更改許多行,但只要存在一個重複,上面這一點也將成立。 |
NONCLUSTERED |
建立指定表的邏輯排序的索引。使用非叢集索引,資料行的物理順序將獨立於其索引順序。這是唯一支援的索引類型。(預設值為 NONCLUSTERED) |
index_name |
指定索引的名稱。索引名稱在表中必須是唯一的,但是在資料庫中不必是唯一的。 |
table_name |
指定要對其建立索引的表的名稱。 此表包含要建立索引的一個或多個列。 |
column name |
要應用索引的列。指定兩個或兩個以上的列的名稱,以對指定列中的組合值建立複合式索引。在表後面的括弧中,按排序優先順序順序列出要包含在複合式索引中的列。
注意: |
不能將包含 ntext 或 image 資料類型的列指定為要建立索引的列。 |
|
ASC | DESC ] |
為特定的索引列確定升序 (ASC) 或降序 (DSC) 排序方向。預設值為 ASC。 |
n |
指示可以為任何特定索引指定多列的預留位置。索引中可以包含的最大列數為 16。 |
STATISTICS_NORECOMPUTE |
指定是否重新計算分發統計資訊。預設值為 OFF。
- ON
不自動重新計算到期的統計資訊。
- OFF
啟用自動統計資訊更新
若要還原自動統計資訊更新,請將 STATISTICS_NORECOMPUTE 設定為 OFF,或執行不帶 NORECOMPUTE 子句的 UPDATE STATISTICS。
重要事項: |
禁用分發統計資訊的自動重新計算功能可能會阻止查詢最佳化工具為涉及此表的查詢選取最佳執行計畫。 |
|
樣本
以下樣本對 MyCustomers 表建立了唯一索引:
複製代碼 |
CREATE TABLE MyCustomers (CustID int, CompanyName nvarchar(50)) CREATE UNIQUE INDEX idxCustId ON MyCustomers (CustId) |