1.索引的作用
類似于一本書的目錄鸟蜡,氣到優(yōu)化查詢的功能
2.索引類型
BTREE索引
RTREE索引
HASH索引
FULLTEXT(全文)索引
3.BTREE的細分類(算法)
B-TREE
B+TREE
B*TREE
4. Btree索引的功能分類
聚集索引(集群索引)
輔助索引(二級索引)
5. B樹是如何創(chuàng)建的
輔助索引:
1)將name列的所有值取出來,進行自動排序
2)將排完序的值均勻的落在16kb葉子節(jié)點數(shù)據(jù)頁中挺邀,并將索引鍵值所對應(yīng)的數(shù)據(jù)行的聚集索引的列值
3)向上生成枝節(jié)點和根節(jié)點
聚集索引(IOT)
1)默認是按照主鍵生成聚集索引揉忘,沒有主鍵,存儲殷勤會使用唯一鍵端铛,如果都沒有泣矛,會生成隱藏的聚集索引。
2)數(shù)據(jù)在存儲時禾蚕,就會按照聚集索引的順序存儲到磁盤的數(shù)據(jù)頁您朽。
3)有雨本身的數(shù)據(jù)就是有序的,所以聚集索引構(gòu)建是時换淆,就不需要排序
4)聚集索引直接將磁盤的數(shù)據(jù)頁虚倒,作為葉子節(jié)點
5)枝節(jié)點和根節(jié)點只會調(diào)取下層節(jié)點主鍵的最小值
6.輔助索引和聚集索引的區(qū)別
1)輔助索引:
葉子結(jié)點只保存主鍵值+索引鍵值的有序存儲
對索引鍵值會自動排序
需要手工創(chuàng)建
輔助索引可以有多個
任何列都可以創(chuàng)建
2)聚集索引
只能在主鍵列生成,唯一且非空
數(shù)據(jù)存儲時产舞,就是按照聚集索引順序進行有序存儲
葉子節(jié)點不需要單獨生成
7.輔助索引細分
單列輔助索引
select * from ti where name=''
聯(lián)合索引
select * from t1 where a and b and c
唯一索引
8.索引樹 的高度(越低越好)
8.1表的數(shù)據(jù)量級大
了解:分區(qū)表
分庫分表(分布式架構(gòu))
8.2 索引鍵值的長度
1)盡可能選擇列值短的列創(chuàng)建索引
2)采用前綴索引
8.3數(shù)據(jù)類型的選擇
char 和 varchar
enum
9.索引管理
9.0 壓力測試準備
10.explain(desc) 工具
desc select * from test.t100w where k2='cdHI';
#或者
explain select * from test.t100w where k2='cdHI';
#執(zhí)行一樣
作用:
抓取優(yōu)化器優(yōu)化過的執(zhí)行計劃
10.1執(zhí)行計劃分析
mysql[test]>desc select * from test.t100w where k2='cdHI';
table:以上SQL語句設(shè)計的表
type:查詢的類型(全表掃描<ALL>,索引掃描具壮,查不到數(shù)據(jù)<NULL>)
possible_keys:可能用到的索引
key:使用到的索引
key_len:索引的覆蓋長度
extra:額外的信息
10.2詳細說明
10.2.1
ALL:全表掃描准颓,不會走任何索引
1)查詢條件哈蝇,沒建索引
2)有索引不走
10.2.2index 全索引掃描
mysql[test]>desc select k2 from t100w;
+----+-------------+-------+------------+-------+---------------+--------+---------+------+--------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+-------+---------------+--------+---------+------+--------+----------+-------------+
| 1 | SIMPLE | t100w | NULL | index | NULL | idx_kd | 17 | NULL | 997665 | 100.00 | Using index |
+----+-------------+-------+------------+-------+---------------+--------+---------+------+--------+----------+-------------+
1 row in set, 1 warning (0.00 sec)
=========從染個開始,我們才認為索引是有價值的===
10.2.3.range索引范圍查詢
輔助索引:
< 攘已, >炮赦, >=, <= 样勃, like吠勘, between an
in() , or
聚集索引:
!=峡眶,not in
ref:輔助索引等值查詢
ref_eq:多表鏈接查詢中剧防,非驅(qū)動表on的條件列是主鍵或者唯一鍵
const(system):主鍵或唯一鍵的等值
NULL:獲取不到數(shù)據(jù)