Mysql筆記(二)索引介紹

2021-09-27 13:01:24 字數 2731 閱讀 3330

索引介紹

索引是什麼

官方介紹索引是幫助mysql高效獲取資料資料結構。更通俗的說,資料庫索引好比是一本書前面的目

錄,能加快資料庫的查詢速度

索引的優勢和劣勢

優勢:

劣勢:索引的分類

索引的使用

建立索引

create

index index_name on

table

(column

(length));

alter

table table_name add

index index_name (

column

(length)

);

create

unique

index index_name on

table

(column

(length));

alter

table table_name add

unique

index index_name(

column

);

create

unique

index index_name on

table

(column

(length));

alter

table table_name add

unique

index index_name(

column

);

create fulltext index index_name on

table

(column

(length));

alter

table table_name add fulltext index index_name(

column

);

刪除索引
drop

index index_name on

table

;

檢視索引
show

index

from table_name;

索引原理分析

索引的儲存結構

索引結構

b樹和b+樹

資料結構示例**:

b樹圖示b樹是為了磁碟或其它儲存裝置而設計的一種多叉(下面你會看到,相對於二叉,b樹每個內結點有多個

分支,即多叉)平衡查詢樹。 多叉平衡

b+tree對比btree和的優勢

磁碟讀寫代價更低

一般來說b+tree比btree更適合實現外存的索引結構,因為儲存引擎的設計專家巧妙的利用了外存(磁碟)的儲存結構,即磁碟的最小儲存單位是扇區(sector),而作業系統的塊(block)通常是整數倍的sector,作業系統以頁(page)為單位管理記憶體,一頁(page)通常預設為4k,資料庫的頁通常設定為作業系統頁的整數倍,因此索引結構的節點被設計為乙個頁的大小,然後利用外存的「預讀取」原則,每次讀取的時候,把整個節點的資料讀取到記憶體中,然後在記憶體中查詢,已知記憶體的讀取速度是外存讀取i/o速度的幾百倍,那麼提公升查詢速度的關鍵就在於盡可能少的磁碟i/o,那麼可以知道,每個節點中的key個數越多,那麼樹的高度越小,需要i/o的次數越少,因此一般來說b+tree比btree更快,因為b+tree的非葉節點中不儲存data,就可以儲存更多的key。

查詢速度更穩定

由於b+tree非葉子節點不儲存資料(data),因此所有的資料都要查詢至葉子節點,而葉子節點的高度都是相同的,因此所有資料的查詢速度都是一樣的

b+樹只有葉子節點才會儲存資料,而且儲存的資料都是在一行上,而且這些資料都是有指標指向的,也就是有順序的。

非聚集索引(myisam)

主鍵索引

輔助索引(次要索引)

聚集索引(innodb)

主鍵索引

輔助索引(次要索引)

索引樹

利用組合索引 完成覆蓋索引(利用組合索引完成在輔助索引樹的遍歷,不回表)

MySQL筆記二 索引

mysql資料庫索引的資料結構基礎為b 樹。為表建立所以可以提高查詢的速度,但是寫入資料時效能會有所下降。索引由資料庫表中的一列或多列資料組合而成,其作用是提供對錶中資料的查詢速度。索引可分為 普通索引 唯一性索引 全文索引 單列索引 多列索引和空間索引等。索引是建立在標上的,是對資料庫表中的一列或...

MySQL優化 二 索引的介紹

索引的作用 1.提高查詢的速度 2.提高排序的速度 3.提高分組的速度 btree型別的索引 內部實際採用二叉樹的資料結構,例如 4 2 6 1 3 5 7採用類似的資料結構將資料的查詢時間複雜度從n 2降低到log2n hash型別的索引採用hash演算法,將每乙個主鍵進行自定義的hash函式從而...

MySQL索引介紹

索引由資料庫表中一列或者多列組合而成,其作用是提高對錶中資料的查詢速度。建立索引是指在某個表的一列或者多列上建立乙個索引,用來提高對錶的訪問速度,建立索引由三種方法 在建立表的時候建立,在已存在的表上建立和用alter table語句建立。建立索引的基本語法格式 asc引數表示公升序排列,desc引...