MySQL索引型別(type)分析

2021-10-12 07:18:56 字數 3031 閱讀 3451

system > const > eq_ref > ref > range > index > all

注意:這裡主要針對mysql5.6進行講解,與其他版本有區別,但是原理過程一致

# 教師表

create

table teacher(

tid int(5

),tname varchar(20

),tcid int(5

));# 教師卡

create

table teachercard(

tcid int(5

),tcdesc varchar(20

));# 插入教師資訊

insert

into teacher values(1

,'tz',1

);insert

into teacher values(2

,'tw',2

);insert

into teacher values(3

,'tl',3

);# 插入教師卡資訊

insert

into teachercard values(1

,'tzdesc');

insert

into teachercard values(2

,'twdesc');

insert

into teachercard values(3

,'tldesc');

# 教師表新增主鍵索引

alter

table teacher add

constraint pk_tid primary

key(tid)

;

衍生表只有一條資料的主查詢;衍生表通過主鍵查詢只有一條資料,再通過這條資料進行主查詢。

# 子查詢為主鍵查詢

explain

select

*from

(select

*from test01 where tid =

1) t;

子查詢通過主鍵查詢得出一條資料(該條資料構成衍生表),通過衍生表的資料進行主查詢,其衍生表的索引型別為system。

僅僅能查到一條資料的sql,用於primary key 或 unique的索引(其他索引型別不屬於)。

# 主鍵查詢只有一條資料的情況,型別為const

唯一性索引,表索引與另外表的主鍵進行關聯,兩張表之間每條資料要一一對應(每個都要一一對應,不能乙個對應多個,不能沒有對應),查詢的資料在表中是唯一性,不能有重複。

# 給teachercard新增主鍵

alter

table teachercard add

constraint pk_tcid primary

key(tcid)

;# 對teacher表進行索引唯一查詢

explain

select t.tcid from teacher t, teachercard tc where t.tcid = tc.tcid;

主表(沒有外來鍵的表)為eq_ref:

非唯一線性索引,對於每個索引鍵的查詢返回的資料為0或多條。

# 給teacher表的tname的字段新增索引

alter

table teacher add

index tname_index (tname)

;# 根據tname = tz查詢出兩條資料

explain

select

*from teacher where tname =

'tz'

;

根據tname索引直接查詢出來的值為ref型別。

檢查指定範圍行,where後面是乙個範圍查詢(between、in、>、

# 檢視range型別的索引

explain

select

*from teacher t where t.tid in(1

,2);

explain

select

*from teacher where tid between

1and2;

explain

select

*from teacher where tid <

3;

範圍查詢指定的索引,其索引型別為range:

查詢索引中的所有資料。

# 查詢索引的所有資料,其中tname就是索引

查詢表中的所有資料,或者根據不是索引的字段查詢。

# 直接查詢

explain

select

*from teacher;

type型別總結:

mysql索引型別介紹 mysql索引型別介紹

索引型別介紹 主鍵索引 primary key 要求關鍵字不能重複,也不能為null,同時增加主鍵約束 主鍵索引定義時,不能命名 唯一索引 unique index 要求關鍵字不能重複,同時增加唯一約束 普通索引 index 對關鍵字沒有要求 全文索引 fulltext key 關鍵字的 不是所有欄...

mysql索引型別介紹 mysql索引型別介紹

b 樹是多路平衡查詢樹,相對於平衡二叉樹,對父結點的直接子結點個數,不再僅限於2,可以指定m 自定義 這樣可以在樹的深度不大量增加的前提下,儲存更多的結點。b 樹是通常在檔案系統中使用。特點 a 樹的每個結點最多有m 自定義 子結點 b 若根結點不是葉子結點,則至少有兩個子結點 c 除根結點外的所有...

MySQL索引 索引型別

在mysql有兩種索引型別 hash b 樹 hash索引原理比較簡單就是利用了乙個hash表 說b 樹之前先要了解b 樹的資料結構。不廢話,先上圖。對b 樹做一些解釋,參考上圖。b 樹的資料都在葉子節點上 非葉子節點上的這些都是範圍。舉例 最上面的根節點上的資料是5,28,65代表的是它的三個子樹...