什麼是索引優缺點有哪些

  索引提供指向儲存在表的指定列中的資料值的指標,然後根據您指定的排序順序對這些指標排序。那麼你對索引瞭解多少呢?以下是由小編整理關於什麼是索引的內容,希望大家喜歡!

  索引的定義概念

  索引是為了加速對錶中資料行的檢索而建立的一種分散的儲存結構。索引是針對表而建立的,它是由資料頁面以外的索引頁面組成的,每個索引頁面中的行都會含有邏輯指標,以便加速檢索物理資料。

  在資料庫關係圖中,可以在選定表的“索引/鍵”屬性頁中建立、編輯或刪除每個索引型別。當儲存索引所附加到的表,或儲存該表所在的關係圖時,索引將儲存在資料庫中。

  索引的作用

  在資料庫系統中建立索引主要有以下作用:

  ***1***快速取資料;

  ***2***保證資料記錄的唯一性;

  ***3***實現表與表之間的參照完整性;

  ***4***在使用ORDER by、group by子句進行資料檢索時,利用索引可以減少排序和分組的時間。

  索引的優缺點

  優點

  1、大大加快資料的檢索速度;

  2、建立唯一性索引,保證資料庫表中每一行資料的唯一性;

  3、加速表和表之間的連線;

  4、在使用分組和排序子句進行資料檢索時,可以顯著減少查詢中分組和排序的時間。

  缺點

  1、索引需要佔物理空間。

  2、當對錶中的資料進行增加、刪除和修改的時候,索引也要動態的維護,降低了資料的維護速度。

  索引的型別

  根據資料庫的功能,可以在資料庫設計器中建立四種索引:普通索引、唯一索引、主鍵索引和聚集索引。

  普通索引

  最基本的索引型別,沒有唯一性之類的限制。普通索引可以通過以下幾種方式建立:

  建立索引,例如CREATE INDEX <索引的名字> ON tablename ***列的列表***;

  修改表,例如ALTER TABLE tablename ADD INDEX [索引的名字] ***列的列表***;

  建立表的時候指定索引,例如CREATE TABLE tablename *** [、、、], INDEX [索引的名字] ***列的列表*** ***;

  唯一索引

  唯一索引是不允許其中任何兩行具有相同索引值的索引。

  當現有資料中存在重複的鍵值時,大多數資料庫不允許將新建立的唯一索引與表一起儲存。資料庫還可能防止新增將在表中建立重複鍵值的新資料。例如,如果在 employee 表中職員的姓 ***lname*** 上建立了唯一索引,則任何兩個員工都不能同姓。

  對某個列建立UNIQUE索引後,插入新紀錄時,資料庫管理系統會自動檢查新紀錄在該列上是否取了重複值,在CREATE TABLE 命令中的UNIQE約束將隱式建立UNIQUE索引。

  建立唯一索引的幾種方式:

  建立索引,例如CREATE UNIQUE INDEX <索引的名字> ON tablename ***列的列表***;

  修改表,例如ALTER TABLE tablename ADD UNIQUE [索引的名字] ***列的列表***; ;

  建立表的時候指定索引,例如CREATE TABLE tablename *** [、、、], UNIQUE [索引的名字] ***列的列表*** ***;

  主鍵索引

  簡稱為主索引,資料庫表中一列或列組合***欄位***的值唯一標識表中的每一行。該列稱為表的主鍵。

  在資料庫關係圖中為表定義主鍵將自動建立主鍵索引,主鍵索引是唯一索引的特定型別。該索引要求主鍵中的每個值都唯一。當在查詢中使用主鍵索引時,它還允許對資料的快速訪問。有

  提示儘管唯一索引有助於定位資訊,但為獲得最佳效能結果,建議改用主鍵索引。

  候選索引

  與主索引一樣要求欄位值的唯一性,並決定了處理記錄的順序。在資料庫和自由表中,可以為每個表建立多個候選索引。

  聚集索引

  也稱為聚簇索引,在聚集索引中,表中行的物理順序與鍵值的邏輯***索引***順序相同。一個表只能包含一個聚集索引, 即如果存在聚集索引,就不能再指定CLUSTERED 關鍵字。

  索引不是聚集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。與非聚集索引相比,聚集索引通常提供更快的資料訪問速度。聚集索引更適用於對很少對基表進行增刪改操作的情況。

  如果在表中建立了主鍵約束,SQL Server將自動為其產生唯一性約束。在建立主鍵約束時,指定了CLUSTERED關鍵字或乾脆沒有制定該關鍵字,SQL Sever將會自動為表生成唯一聚集索引。

  非聚集索引

  也叫非簇索引,在非聚集索引中,資料庫表中記錄的物理順序與索引順序可以不相同。一個表中只能有一個聚集索引,但表中的每一列都可以有自己的非聚集索引。如果在表中建立了主鍵約束,SQL Server將自動為其產生唯一性約束。在建立主鍵約束時,如果制定NONCLUSTERED關鍵字,則將為表產生唯一聚集索引。


索引的優缺點