位置:首頁 > 數據庫 > SQL教學 > SQL索引

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 UNIQUE INDEX index_name
on table_name (column_name);

組合索引:

組合索引在表上的兩個或多個列的索引。其基本語法如下:

CREATE INDEX index_name
on table_name (column1, column2);

是否要創建一個單列索引或複合索引,考慮到列,您可以使用非常頻繁的查詢的WHERE子句作為過濾條件。

應該有隻有一個使用列,單列指數應的選擇。如果有頻繁使用WHERE子句作為過濾器中的兩個或多個列,組合索引將是最好的選擇。

隱式索引:

隱式索引是自動由數據庫服務器創建對象時創建的索引。索引是主鍵約束和唯一性約束自動創建。

DROP INDEX命令:

索引可以使用SQL DROP命令刪除。 應當謹慎刪除索引時導致的性能可能會減慢或改善。

其基本語法如下:

DROP INDEX index_name;

您可以查看INDEX約束篇章查看索引的實際例子。

什麼時候避免使用索引?

儘管索引的目的在於提高數據庫的性能,以下幾種情況應該避免使用。以下準則顯示,當使用索引應該重新考慮:

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

  • 有頻繁的,大批量更新或插入操作的表。

  • 索引不應該用於對包含大量NULL值的列。

  • 列經常操縱不應該被索引。