T-SQL - 索引



索引是資料庫搜尋引擎用來加速資料檢索的特殊查詢表。簡單來說,索引是指向表中資料的指標。資料庫中的索引與書籍末尾的索引非常相似。

例如,如果您想參考書中討論某個特定主題的所有頁面,您首先參考索引,索引按字母順序列出所有主題,然後參考一個或多個特定的頁碼。

索引有助於加快 SELECT 查詢和 WHERE 子句的速度,但會減慢資料輸入(UPDATE 和 INSERT 語句)的速度。建立或刪除索引不會影響資料。

建立索引涉及 CREATE INDEX 語句,該語句允許您命名索引,指定表以及要索引的列或列,並指示索引是升序還是降序。

索引也可以是唯一的,類似於 UNIQUE 約束,因為索引可以防止在具有索引的列或列組合中插入重複項。

CREATE INDEX 命令

以下是 CREATE INDEX 的基本語法。

語法

CREATE INDEX index_name ON table_name

單列索引

單列索引是基於單個表列建立的索引。以下是基本語法。

語法

CREATE INDEX index_name 
ON table_name (column_name)

示例

CREATE INDEX singlecolumnindex 
ON customers (ID)

唯一索引

唯一索引不僅用於效能,還用於資料完整性。唯一索引不允許將任何重複值插入表中。以下是基本語法。

語法

CREATE UNIQUE INDEX index_name 
on table_name (column_name)

示例

CREATE UNIQUE INDEX uniqueindex 
on customers (NAME)

組合索引

組合索引是表中兩列或多列上的索引。以下是基本語法。

語法

CREATE INDEX index_name on table_name (column1, column2) 

示例

CREATE INDEX compositeindex 
on customers (NAME, ID)

無論建立單列索引還是組合索引,都要考慮在查詢的 WHERE 子句中作為篩選條件可能非常頻繁使用的列。

如果只有一列被使用,則單列索引應該是選擇。如果 WHERE 子句中作為篩選條件頻繁使用兩列或多列,則組合索引是最佳選擇。

隱式索引

隱式索引是在建立物件時由資料庫伺服器自動建立的索引。主鍵約束和唯一約束會自動建立索引。

DROP INDEX 命令

可以使用 MS SQL SERVER DROP 命令刪除索引。刪除索引時應謹慎,因為效能可能會降低或提高。

語法

以下是基本語法。

DROP INDEX tablename.index_name

何時避免使用索引?

儘管索引旨在提高資料庫的效能,但在某些情況下應避免使用它們。以下指南指示何時應重新考慮使用索引:

  • 不應在小型表上使用索引。

  • 頻繁進行大量批處理更新或插入操作的表不應建立索引。

  • 不應在包含大量 NULL 值的列上使用索引。

  • 不應為頻繁操作的列建立索引。

廣告