成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

圖解MySQL索引:B-樹(shù)、B+樹(shù)

數(shù)據(jù)庫(kù) MySQL
看了很多關(guān)于索引的博客,講的大同小異。但是始終沒(méi)有讓我明白關(guān)于索引的一些概念,如B-Tree索引,Hash索引,唯一索引….或許有很多人和我一樣,沒(méi)搞清楚概念就開(kāi)始研究B-Tree,B+Tree等結(jié)構(gòu),導(dǎo)致在面試的時(shí)候答非所問(wèn)!

看了很多關(guān)于索引的博客,講的大同小異。但是始終沒(méi)有讓我明白關(guān)于索引的一些概念,如B-Tree索引,Hash索引,唯一索引….或許有很多人和我一樣,沒(méi)搞清楚概念就開(kāi)始研究B-Tree,B+Tree等結(jié)構(gòu),導(dǎo)致在面試的時(shí)候答非所問(wèn)!

索引是什么?

索引是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。

索引能干什么?

提高數(shù)據(jù)查詢的效率。

索引:排好序的快速查找數(shù)據(jù)結(jié)構(gòu)!索引會(huì)影響where后面的查找,和order by 后面的排序。

一、索引的分類

1️⃣從存儲(chǔ)結(jié)構(gòu)上來(lái)劃分:BTree索引(B-Tree或B+Tree索引),Hash索引,full-index全文索引,R-Tree索引。

2️⃣從應(yīng)用層次來(lái)分:普通索引,唯一索引,復(fù)合索引。

3️⃣根據(jù)中數(shù)據(jù)的物理順序與鍵值的邏輯(索引)順序關(guān)系:聚集索引,非聚集索引。

1️⃣中所描述的是索引存儲(chǔ)時(shí)保存的形式,2️⃣是索引使用過(guò)程中進(jìn)行的分類,兩者是不同層次上的劃分。不過(guò)平時(shí)講的索引類型一般是指在應(yīng)用層次的劃分。

就像手機(jī)分類,安卓手機(jī),IOS手機(jī) 與 華為手機(jī),蘋果手機(jī),OPPO手機(jī)一樣。

普通索引:即一個(gè)索引只包含單個(gè)列,一個(gè)表可以有多個(gè)單列索引

唯一索引:索引列的值必須唯一,但允許有空值

復(fù)合索引:即一個(gè)索引包含多個(gè)列

聚簇索引(聚集索引):并不是一種單獨(dú)的索引類型,而是一種數(shù)據(jù)存儲(chǔ)方式。具體細(xì)節(jié)取決于不同的實(shí)現(xiàn),InnoDB的聚簇索引其實(shí)就是在同一個(gè)結(jié)構(gòu)中保存了B-Tree索引(技術(shù)上來(lái)說(shuō)是B+Tree)和數(shù)據(jù)行。

非聚簇索引:不是聚簇索引,就是非聚簇索引(認(rèn)真臉)。

二、索引的底層實(shí)現(xiàn)

mysql默認(rèn)存儲(chǔ)引擎innodb只顯式支持B-Tree( 從技術(shù)上來(lái)說(shuō)是B+Tree)索引,對(duì)于頻繁訪問(wèn)的表,innodb會(huì)透明建立自適應(yīng)hash索引,即在B樹(shù)索引基礎(chǔ)上建立hash索引,可以顯著提高查找效率,對(duì)于客戶端是透明的,不可控制的,隱式的。

不談存儲(chǔ)引擎,只討論實(shí)現(xiàn)(抽象)

Hash索引

基于哈希表實(shí)現(xiàn),只有精確匹配索引所有列的查詢才有效,對(duì)于每一行數(shù)據(jù),存儲(chǔ)引擎都會(huì)對(duì)所有的索引列計(jì)算一個(gè)哈希碼(hash code),并且Hash索引將所有的哈希碼存儲(chǔ)在索引中,同時(shí)在索引表中保存指向每個(gè)數(shù)據(jù)行的指針。

 

B-Tree能加快數(shù)據(jù)的訪問(wèn)速度,因?yàn)榇鎯?chǔ)引擎不再需要進(jìn)行全表掃描來(lái)獲取數(shù)據(jù),數(shù)據(jù)分布在各個(gè)節(jié)點(diǎn)之中。

 

是B-Tree的改進(jìn)版本,同時(shí)也是數(shù)據(jù)庫(kù)索引索引所采用的存儲(chǔ)結(jié)構(gòu)。數(shù)據(jù)都在葉子節(jié)點(diǎn)上,并且增加了順序訪問(wèn)指針,每個(gè)葉子節(jié)點(diǎn)都指向相鄰的葉子節(jié)點(diǎn)的地址。相比B-Tree來(lái)說(shuō),進(jìn)行范圍查找時(shí)只需要查找兩個(gè)節(jié)點(diǎn),進(jìn)行遍歷即可。而B(niǎo)-Tree需要獲取所有節(jié)點(diǎn),相比之下B+Tree效率更高。

 

案例:假設(shè)有一張學(xué)生表,id為主鍵

 

在MyISAM引擎中的實(shí)現(xiàn)(二級(jí)索引也是這樣實(shí)現(xiàn)的)

 

在InnoDB中的實(shí)現(xiàn)

 

三、問(wèn)題

問(wèn):為什么索引結(jié)構(gòu)默認(rèn)使用B-Tree,而不是hash,二叉樹(shù),紅黑樹(shù)?

hash:雖然可以快速定位,但是沒(méi)有順序,IO復(fù)雜度高。

二叉樹(shù):樹(shù)的高度不均勻,不能自平衡,查找效率跟數(shù)據(jù)有關(guān)(樹(shù)的高度),并且IO代價(jià)高。

紅黑樹(shù):樹(shù)的高度隨著數(shù)據(jù)量增加而增加,IO代價(jià)高。

問(wèn):為什么官方建議使用自增長(zhǎng)主鍵作為索引。

結(jié)合B+Tree的特點(diǎn),自增主鍵是連續(xù)的,在插入過(guò)程中盡量減少頁(yè)分裂,即使要進(jìn)行頁(yè)分裂,也只會(huì)分裂很少一部分。并且能減少數(shù)據(jù)的移動(dòng),每次插入都是插入到最后。總之就是減少分裂和移動(dòng)的頻率。

插入連續(xù)的數(shù)據(jù):

 

插入非連續(xù)的數(shù)據(jù)

 

 

責(zé)任編輯:龐桂玉 來(lái)源: Java知音
相關(guān)推薦

2020-04-01 18:08:57

MySQL B-樹(shù)B+樹(shù)

2020-02-12 19:01:22

索引B-樹(shù)B+樹(shù)

2019-01-29 19:43:10

MySQL索引數(shù)據(jù)庫(kù)

2021-02-16 16:38:41

MySQLB+樹(shù)索引

2019-09-24 09:33:53

MySQLB+樹(shù)InnoDB

2022-03-28 08:24:52

MySQL聚簇索引非聚簇索引

2021-05-19 09:51:31

MySQL-B+樹(shù)數(shù)據(jù)

2024-05-22 09:01:53

InnoDBB+索引

2023-08-29 08:31:13

B+樹(shù)數(shù)據(jù)索引

2019-03-14 09:51:50

MySQL存儲(chǔ)邏輯架構(gòu)

2023-07-31 09:12:39

B+樹(shù)節(jié)點(diǎn)B+Tree

2024-11-19 08:40:18

2021-04-19 10:03:33

MongoDbB 樹(shù) B+ 樹(shù)

2020-03-19 07:53:56

Mysql引擎B+樹(shù)

2021-09-04 11:31:00

MYSQLSQL調(diào)優(yōu)

2022-04-16 14:20:29

MySQL數(shù)據(jù)庫(kù)

2019-09-19 14:03:32

B樹(shù)節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)

2023-11-28 16:17:20

數(shù)據(jù)庫(kù)MySQL

2021-12-14 17:19:15

樹(shù)存儲(chǔ)數(shù)據(jù)

2021-05-31 11:43:19

B-樹(shù)MySQL索引
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 精品一区二区三区入口 | 欧美xxxx色视频在线观看免费 | a级在线免费观看 | 午夜网| 在线激情视频 | 九一精品 | 亚洲欧美成人影院 | 日韩免费一区二区 | 欧美日韩高清在线一区 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 午夜国产精品视频 | 亚洲国产欧美在线 | 超碰人人插| 欧美另类视频 | 国产激情一区二区三区 | 欧美精品综合 | 欧美激情亚洲 | 国产精品揄拍一区二区 | 欧美精品第三页 | 午夜精品久久久久久久久久久久久 | 亚洲精品国产综合区久久久久久久 | 成人免费观看视频 | 欧美一级在线视频 | 国产精品毛片一区二区在线看 | 午夜精品久久久久久久星辰影院 | 日韩2020狼一二三 | 国产精品电影在线观看 | 岛国av免费在线观看 | 在线视频国产一区 | 久久综合九色综合欧美狠狠 | 欧美激情精品久久久久久 | 韩日三级| 91精品国产91久久久久久 | 久久成人免费 | 欧美激情一区 | 午夜激情在线 | 亚洲日本欧美日韩高观看 | 中文字幕视频在线观看 | 国产最新精品视频 | xx视频在线| 成年人在线观看 |