mysql索引 聚集索引_MySql数据库索引-聚集索引和辅助索引
InnoDB存儲(chǔ)引擎索引:
B+樹索引:不能找到一個(gè)給定鍵值的具體行,能找到的只是被查找數(shù)據(jù)行所在的頁。然后把頁加載到內(nèi)存,在查詢所要的數(shù)據(jù)。
全文索引:
哈希索引:InnoDB會(huì)根據(jù)表的使用情況自動(dòng)為表生成哈希索引,不能人為的干預(yù)是否在一張表中生成哈希索引
B+樹索引在數(shù)據(jù)庫中的高度一般是2~4層,所以查詢最多需要2到4次IO。
B+樹索引分為聚集索引和輔助索引。聚集索引和輔助索引的區(qū)別是葉子節(jié)點(diǎn)存放的是否是一整行的信息。
聚集索引:按照每張表的主鍵構(gòu)造一棵B+樹,同時(shí)葉子節(jié)點(diǎn)中存放的即為整張表的行記錄數(shù)據(jù),也將聚集索引的葉子節(jié)點(diǎn)稱為數(shù)據(jù)頁。
create table t(
a int not null,
b varchar(8000),
c int not null,
primary key(a),
key indx_c(c)
)engine=InnoDB
insert into t select 1, repeat('a',7000), -1;
insert into t select 2, repeat('a',7000), -2;
insert into t select 3, repeat('a',7000), -3;
insert into t select 4, repeat('a',7000), -4;
輔助索引:葉子節(jié)點(diǎn)并不包含行記錄的全部數(shù)據(jù)。葉子節(jié)點(diǎn)除了包含鍵值以外,每個(gè)葉子節(jié)點(diǎn)的索引行中還包含了一個(gè)書簽。該書簽用于高速存儲(chǔ)引擎哪里可以找到與索引相對(duì)應(yīng)的行數(shù)據(jù)。
舉例說明,如果在一棵高度為3的輔助索引樹中查找數(shù)據(jù),那需要對(duì)這棵輔助索引樹遍歷3次找到指定主鍵,如果聚集索引樹的高度同樣為3,那么還需要對(duì)聚集索引樹進(jìn)行3次查找,最終找到一個(gè)完整的行數(shù)據(jù)所在的頁,因此一共需要6次邏輯IO訪問以得到最終的一個(gè)數(shù)據(jù)頁。
create table t(
a int not null,
b varchar(8000),
c int not null,
primary key(a),
key indx_c(c)
)engine=InnoDB
insert into t select 1, repeat('a',7000), -1;
insert into t select 2, repeat('a',7000), -2;
insert into t select 3, repeat('a',7000), -3;
insert into t select 4, repeat('a',7000), -4;
總結(jié)
以上是生活随笔為你收集整理的mysql索引 聚集索引_MySql数据库索引-聚集索引和辅助索引的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 装win7系统教程(云骑士U盘重装win
- 下一篇: qt mysql 清空表格_qt删除数据