索引分類 01

2021-09-02 21:51:48 字數 1598 閱讀 4012

在mysql中,索引是在儲存引擎層實現的,而不是在伺服器層。mysql支援的索引方法,也可以說成是索引的型別(這是廣義層面上的),主要有以下幾種:在mysql中,索引是在儲存引擎層實現的,而不是在伺服器層。mysql支援的索引方法,也可以說成是索引的型別(這是廣義層面上的),主要有以下幾種:

儲存引擎結構

概念b -tree

最常見的索引儲存結構,大部分引擎都支援b樹引擎

b +tree

mysql使用索引儲存結構,是b-tree樹的加強版

hash

只有memory引擎支援,使用場景簡單,適用key-value查詢,不適用在範圍查詢如》,<,>=,<=

r_tree

空間索引,是myisam的乙個特殊索引型別,主要用於地理空間資料型別,使用較少

索引概念

普通索引

也叫普通索引(index或key),它可以常規地提高查詢效率。一張資料表中可以有多個常規索引。常規索引是使用最普遍的索引型別,如果沒有明確指明索引的型別,我們所說的索引都是指常規索

唯一索引

唯一索引(unique key),可以提高查詢效率,並提供唯一性約束。一張表中可以有多個唯一索引。允許為空值

主鍵索引

主鍵索引(primary key),也簡稱主鍵。它可以提高查詢效率,並提供唯一性約束。一張表中只能有乙個主鍵;被標誌為自動增長的字段一定是主鍵,但主鍵不一定是自動增長。一般把主鍵定義在無意義的字段上(如:編號)主鍵的資料型別最好是數值。

復合索引

復合索引 : 即乙個索引包含多個列,如果索引包含多個列,一般會將其稱作復合索引,此時,列的順序就十分重要,因為mysql只能高效的使用索引的最左字首列。建立乙個包含兩個列的索引,和建立兩個只包含一列的索引是大不相同的。

全文索引

全文索引(full text),可以提高全文搜尋的查詢效

外來鍵索引

外來鍵索引(foreign key),簡稱外來鍵,它可以提高查詢效率,外來鍵會自動和對應的其他表的主鍵關聯外來鍵的主要作用是保證記錄的一致性和完整性

注意:只有innodb儲存引擎的表才支援外來鍵。外來鍵字段如果沒有指定索引名稱,會自動生成。如果要刪除父表(如分類表)中的記錄,必須先刪除子表(帶外來鍵的表,如文章表)中的相應記錄,否則會出錯。 建立表的時候,可以給字段設定外來鍵,如 foreign key(cate_id) references cms_cate(id)

由於外來鍵的效率並不是很好,因此並不推薦使用外來鍵,使用邏輯是完成。但我們要使用外來鍵的思想來保證資料的一致性和完整性。

索引概念

聚簇索引

innodb的聚簇索引其實就是在同乙個結構中儲存了b+tree索引和資料行。

非聚簇索引

不是聚簇索引,就是非聚簇索引,也是二級索引,葉節點儲存著聚簇索引資訊

優點:可以把相關的資料儲存在一起。資料訪問更快。聚簇索引將索引和資料儲存在同乙個b+tree中,因此,從聚簇索引中獲取資料通常比非聚簇索引要快。使用覆蓋索引掃瞄的查詢可以直接使用節點頁中的主鍵值。

如果乙個索引包含(或者覆蓋)了所有需要查詢的字段(列)的值,我們稱之為「覆蓋索引」。就是在b+tree的磁碟塊(節點)中能夠查詢得到資訊,而不用查詢到聚簇索引的葉節點就可以拿到資訊,並且直接返回,這也是為什麼我們經常倡導的少使用「select * 」 的原因。

oracle索引分類

邏輯上 single column 單列索引 concatenated 多列索引 unique 唯一索引 nonunique 非唯一索引 function based函式索引 domain 域索引 物理上 partitioned 分割槽索引 nonpartitioned 非分割槽索引 b tree ...

oracle索引分類

b tree index,b樹索引 在建立索引時他是預設的索引型別,b樹索引可以使單一列 簡單 的索引,也可以是多個列 組合 復合 的索引。最多可以包括32列。適合 1,訪問表中佔很小比例的行,這樣就可以使用索引快速定位。2,根本不訪問表,所需查詢的資料全部在索引中,比如查詢的列就是索引,這樣直接訪...

mysql索引分類

mysql索引的概念 mysql索引是一種特殊檔案 innodb資料表上的索引是表空間的乙個組成部分 能加快資料庫的查詢時間。索引分為聚族索引和非聚族索引,聚族索引是按照資料存放的物理位置為順序的,能提高多行檢索的速度,而非聚族索引對於單行的檢索很快。mysql索引型別 1 普通索引 最基本的索引,...