索引是數(shù)據(jù)庫搜索引擎用來加速數(shù)據(jù)檢索的特殊查找表。 簡單地說,一個索引是一個指向表中數(shù)據(jù)的指針。 數(shù)據(jù)庫中的索引與書本目錄的索引方式非常相似。
例如,如果您要引用一本書中討論某個主題的所有頁面,則可以參考索引,該索引按字母順序列出所有主題,然后指定了這些主題的頁碼。
索引加快了SELECT查詢和WHERE子句,但它降低了UPDATE和INSERT語句的數(shù)據(jù)輸入速度。創(chuàng)建或刪除索引不會對數(shù)據(jù)有影響。
創(chuàng)建索引涉及CREATE INDEX語句,它允許你對索引進行命名,指定表和要索引的列,并指示索引是按升序還是按降序排列。
索引也可以是唯一的,類似于UNIQUE約束,索引防止在具有索引的列的組合中出現(xiàn)重復條目。
以下是CREATE INDEX的基本語法。
CREATE INDEX index_name ON table_name
單列索引是基于僅一個表的單列創(chuàng)建的索引。以下是基本語法。
CREATE INDEX index_name ON table_name (column_name)
CREATE INDEX singlecolumnindex ON customers (ID)
唯一索引不僅用于查找性能的提升,還可用于約束數(shù)據(jù)的完整性。唯一索引不允許將任何重復值插入到表中。以下是基本語法。
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)
無論是創(chuàng)建單列索引還是復合索引,請考慮您可能在查詢的WHERE子句中頻繁使用的列作為過濾條件。
如果只使用一列,則應該選擇單列索引。 如果在WHERE子句中經(jīng)常使用兩個或多個列作為過濾器,則復合索引將是最佳選擇。
隱式索引是在創(chuàng)建對象時由數(shù)據(jù)庫服務器自動創(chuàng)建的索引。 一般情況下數(shù)據(jù)庫會將自動為主鍵約束和唯一約束創(chuàng)建索引。
可以使用MS SQL SERVER DROP命令刪除索引。 丟棄索引時應小心,因為性能可能會減慢,也可能得到改善。
下面是基本的語法。
DROP INDEX tablename.index_name
雖然索引旨在提高數(shù)據(jù)庫的性能,但有時應避免使用它們。以下幾種情況應重新考慮是否使用索引
不應在小表上使用索引。
經(jīng)常進行大批量更新或插入操作的表不應設置索引。
不應在可能含大量NULL值的列上使用索引。
頻繁操作的列不應設置索引。
更多建議: