資料庫索引

2021-06-20 18:19:03 字數 1238 閱讀 7819

前言

有一天被同行問到資料庫都有什麼型別的索引,卡殼了

正文 什麼是索引?

索引是一種特殊型別的資料庫物件,它與表有著密切的聯絡。 索引是為檢索而存在的。如一些書籍的末尾就專門附有索引,指明了某個關鍵字在正文中的出現的頁碼位置,方便我們查詢,但大多數的書籍只有目錄,目錄不是索引,只是書中內容的排序,並不提供真正的檢索功能。可見建立索引要

單獨占用空間

;索引也並不是必須要建立的,它們只是為更好、

更快的檢索和定位

關鍵字而存在。

索引的型別:

從形式上而言,索引分為

聚集索引

(clustered indexes)和

非聚集索引

(nonclustered indexes)。 

聚集索引:

相當於書籍脊背上那個特定的編號。如果對一張表建立了聚集索引,其索引頁中就包含著建立索引的列的值(下稱索引鍵值),那麼表中的記錄將按照該索引鍵值進行排序。比如,我們如果在「姓名」這一字段上建立了聚集索引,則表中的記錄將按照姓名進行排列;如果建立了聚集索引的列是數值型別的,那麼記錄將按照該鍵值的數值大小來進行排列。由於聚簇索引順序就是資料的儲存順序所以一張表當中只會存在乙個聚簇索引。 

非聚集索引:

用於指定資料的邏輯順序,也就是說,表中的資料並沒有按照索引鍵值指定的順序排列,而仍然按照插入記錄時的順序存放。其索引頁中包含著索引鍵值和它所指向該行記錄在資料頁中的物理位置,叫做行定位符(rid:row id),非聚集索引可以建立多個。

非聚集索引之:

唯一索引:

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

當現有資料中存在重複的鍵值時,大多數資料庫不允許將新建立的

唯一索引與表一起儲存。資料庫還可能防止新增將在表中建立重複鍵值的新資料。例如,如果在employee表中職員的姓(lname)上建立了

唯一索引,則任何兩個員工都不能同姓。

主鍵索引:

資料庫表經常有一列或列組合,其值唯一標識表中的每一行。該列稱為表的主鍵。

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

。主鍵索引與唯一索引的區別在於,主鍵索引不允許有空值,而唯一索引允許存在空值。

資料庫 資料庫索引

索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...

資料庫mysql索引 資料庫 mysql索引

mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...

資料庫索引

索引 索引列唯一索引 主鍵索引 聚簇索引和非聚簇索引 如何建立索引 如何刪除索引 使用索引可快速訪問資料庫表中的特定資訊。索引是對資料庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓 lname 列。如果要按姓查詢特定職員,與必須搜尋表中的所有行相比,索引會幫助您更快地獲得該資...