mysql索引 聚集索引_MySql数据库索引-聚集索引和辅助索引
InnoDB存儲引擎索引:
B+樹索引:不能找到一個給定鍵值的具體行,能找到的只是被查找數據行所在的頁。然后把頁加載到內存,在查詢所要的數據。
全文索引:
哈希索引:InnoDB會根據表的使用情況自動為表生成哈希索引,不能人為的干預是否在一張表中生成哈希索引
B+樹索引在數據庫中的高度一般是2~4層,所以查詢最多需要2到4次IO。
B+樹索引分為聚集索引和輔助索引。聚集索引和輔助索引的區別是葉子節點存放的是否是一整行的信息。
聚集索引:按照每張表的主鍵構造一棵B+樹,同時葉子節點中存放的即為整張表的行記錄數據,也將聚集索引的葉子節點稱為數據頁。
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;
輔助索引:葉子節點并不包含行記錄的全部數據。葉子節點除了包含鍵值以外,每個葉子節點的索引行中還包含了一個書簽。該書簽用于高速存儲引擎哪里可以找到與索引相對應的行數據。
舉例說明,如果在一棵高度為3的輔助索引樹中查找數據,那需要對這棵輔助索引樹遍歷3次找到指定主鍵,如果聚集索引樹的高度同樣為3,那么還需要對聚集索引樹進行3次查找,最終找到一個完整的行數據所在的頁,因此一共需要6次邏輯IO訪問以得到最終的一個數據頁。
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;
總結
以上是生活随笔為你收集整理的mysql索引 聚集索引_MySql数据库索引-聚集索引和辅助索引的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 装win7系统教程(云骑士U盘重装win
- 下一篇: qt mysql 清空表格_qt删除数据