成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

一起來聊聊MySQL索引結(jié)構(gòu)

本篇文章給大家?guī)砹岁P(guān)于mysql的相關(guān)知識(shí),MySQL官方對索引的定義為索引(Index)是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),可以得到索引的本質(zhì),索引是數(shù)據(jù)結(jié)構(gòu),下面一起來看一下,希望對大家有幫助。

一起來聊聊MySQL索引結(jié)構(gòu)

推薦學(xué)習(xí):mysql視頻教程

簡介

在數(shù)據(jù)之外,數(shù)據(jù)庫系統(tǒng)還維護(hù)著滿足特定查找算法的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)以某種方式引用(指向)數(shù)據(jù),這樣就可以在這些數(shù)據(jù)結(jié)構(gòu)上實(shí)現(xiàn)高級查找算法。這種數(shù)據(jù)結(jié)構(gòu),就是索引。

一般來說索引本身也很大,不可能全部存儲(chǔ)在內(nèi)存中,因此索引往往以索引文件的形式存儲(chǔ)的磁盤上。

優(yōu)點(diǎn):

1、類似大學(xué)圖書館建書目索引,提高數(shù)據(jù)檢索的效率,降低數(shù)據(jù)庫的IO成本。

2、通過索引列對數(shù)據(jù)進(jìn)行排序,降低數(shù)據(jù)排序的成本,降低了CPU的消耗。

缺點(diǎn):

1、雖然索引大大提高了查詢速度,同時(shí)卻會(huì)降低更新表的速度,如對表進(jìn)行INSERT、UPDATE和DELETE。因?yàn)楦卤頃r(shí),MySQL不僅要保存數(shù)據(jù),還要保存一下索引文件。每次更新添加了索引列的字段,都會(huì)調(diào)整因?yàn)楦滤鶐淼逆I值變化后的索引信息。

2、實(shí)際上索引也是一張表,該表保存了主鍵與索引字段,并指向?qū)嶓w表的記錄,所以索引列也是要占用空間的

索引舉例:(用樹結(jié)構(gòu)做索引)

左邊是數(shù)據(jù)表,一共有兩列七條記錄,最左邊的是數(shù)據(jù)記錄的物理地址。

一起來聊聊MySQL索引結(jié)構(gòu)

為了加快Col2的查找,可以維護(hù)一個(gè)右邊所示的二叉查找樹,每個(gè)節(jié)點(diǎn)分別包含索引鍵值和一個(gè)指向?qū)?yīng)數(shù)據(jù)記錄物理地址的指針,這樣就可以運(yùn)用二叉查找在一定的復(fù)雜度內(nèi)獲取到相應(yīng)數(shù)據(jù),從而快速的檢索出符合條件的記錄。

索引結(jié)構(gòu)(樹)

如何通過索引加快數(shù)據(jù)庫表的查詢速度呢?為了方便講解,我們限定于數(shù)據(jù)庫表只包含下面這樣兩個(gè)查詢需求:

1、select* from user where id=1234;

2、select *from user where id>1234 and id<2345;(按區(qū)間)

為什么用樹,而不用哈希表

哈希表按值查詢的性能很好,時(shí)間復(fù)雜度是O(1),但它不能支持按照區(qū)間快速查找數(shù)據(jù),因此無法滿足要求。同理,盡管平衡二叉查找樹查詢性能很高,時(shí)間復(fù)雜度為O(logn),而且對樹進(jìn)行中序遍歷,可以輸出有序的數(shù)據(jù)序列,但也無法滿足按照區(qū)間快速查找數(shù)據(jù)的需求。

為了支持按照區(qū)間快速查找數(shù)據(jù),我們對二叉查找樹進(jìn)行改造,將二叉查找樹的葉子節(jié)點(diǎn)用鏈表串起來,如果要查找某個(gè)區(qū)間的數(shù)據(jù),只需要用區(qū)間的起始值,在樹中進(jìn)行查找,當(dāng)定位到有序鏈表中的某個(gè)節(jié)點(diǎn)之后,再從這個(gè)節(jié)點(diǎn)開始順著有序鏈表往后遍歷,直到有序鏈表中的節(jié)點(diǎn)數(shù)據(jù)值大于區(qū)間終止值為止。

一起來聊聊MySQL索引結(jié)構(gòu)

又因?yàn)闃渖系暮芏嗖僮鞯臅r(shí)間復(fù)雜程度與樹的高度成正比,降低的樹的高度,就能減少磁盤IO操作。因此我們把索引構(gòu)建成m叉樹(m>2),詳細(xì)介紹可看后文。

BTree索引

在介紹B+樹之前,先來了解一下B樹。

一起來聊聊MySQL索引結(jié)構(gòu)

1、初始化介紹

一顆b樹,淺藍(lán)色的塊我們稱之為一個(gè)磁盤塊,可以看到每個(gè)磁盤塊包含幾個(gè)數(shù)據(jù)項(xiàng)(深藍(lán)色所示)和指針(黃色所示),如磁盤塊1包含數(shù)據(jù)項(xiàng)17和35,包含指針P1、P2、P3。P1表示小于17的磁盤塊,P2表示在17和35之間的磁盤塊,P3表示大于35的磁盤塊。

注意:

真實(shí)的數(shù)據(jù)只存在于葉子節(jié)點(diǎn),即3、5、9、10、13、15、28、29、36、60、75、79、90、99。(而且是多條數(shù)據(jù)組成的數(shù)據(jù)區(qū)間:3~ 5,… … ,90~ 99)

非葉子節(jié)點(diǎn)不存儲(chǔ)真實(shí)的數(shù)據(jù),只存儲(chǔ)指引搜索方向的數(shù)據(jù)項(xiàng),如17、35并不真實(shí)存在于數(shù)據(jù)表中。

2、查找過程

如果要查找數(shù)據(jù)項(xiàng)29,那么首先會(huì)把磁盤塊1由磁盤加載到內(nèi)存,此時(shí)發(fā)生一次IO,在內(nèi)存中用二分查找確定29在17和35之間,鎖定磁盤塊1的P2指針,內(nèi)存時(shí)間因?yàn)榉浅6蹋ㄏ啾却疟P的IO)可以忽略不計(jì),通過磁盤塊1的P2指針的磁盤地址把磁盤塊3由磁盤加載到內(nèi)存,發(fā)生第二次IO,29在26和30之間,鎖定磁盤塊3的P2指針,通過指針加載磁盤塊8到內(nèi)存,發(fā)生第三次IO,同時(shí)內(nèi)存中做二分查找找到29,結(jié)束查詢,總計(jì)三次IO。

B+Tree索引

B+樹和B樹類似,B+樹是B樹的改進(jìn)版。 即:m叉查找樹與有序鏈表構(gòu)建成的樹就是B+樹,也就是要存儲(chǔ)的樹索引

一起來聊聊MySQL索引結(jié)構(gòu)

如圖:B+樹和B樹的主要區(qū)別有以下兩點(diǎn):

1、B+樹的葉子節(jié)點(diǎn)用鏈表來串聯(lián)。 查找某個(gè)區(qū)間的數(shù)據(jù),只需要用區(qū)間的起始值,在樹中進(jìn)行查找,當(dāng)定位到有序鏈表中的某個(gè)節(jié)點(diǎn)之后,再從這個(gè)節(jié)點(diǎn)開始順著有序鏈表往后遍歷,直到有序鏈表中的節(jié)點(diǎn)數(shù)據(jù)值大于區(qū)間終止值為止。

2、B+樹中的任何節(jié)點(diǎn)都不存儲(chǔ)真實(shí)數(shù)據(jù),只是用來索引。 B樹直接通過葉子節(jié)點(diǎn)獲取到數(shù)據(jù);而B+樹每個(gè)葉子節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)行的鍵值和地址信息,當(dāng)查詢到某個(gè)葉子節(jié)點(diǎn)時(shí),通過葉子節(jié)點(diǎn)的地址找到真實(shí)的數(shù)據(jù)信息。

聚簇索引與非聚簇索引

聚簇索引并不是一種單獨(dú)的索引類型,而是一種數(shù)據(jù)存儲(chǔ)方式。 術(shù)語‘聚簇’表示數(shù)據(jù)行和相鄰的鍵值聚簇的存儲(chǔ)在一起。

聚簇索引的好處:

按照聚簇索引排列順序,查詢顯示一定范圍數(shù)據(jù)的時(shí)候,由于數(shù)據(jù)都是緊密相連,數(shù)據(jù)庫不不用從多個(gè)數(shù)據(jù)塊中提取數(shù)據(jù),所以節(jié)省了大量的io操作。

聚簇索引的限制:

1、對于mysql數(shù)據(jù)庫目前只有innodb數(shù)據(jù)引擎支持聚簇索引,而Myisam并不支持聚簇索引。

2、由于數(shù)據(jù)物理存儲(chǔ)排序方式只能有一種,所以每個(gè)Mysql的表只能有一個(gè)聚簇索引。一般情況下就是該表的主鍵。

3、為了充分利用聚簇索引的聚簇的特性,所以innodb表的主鍵列盡量選用有序的順序id,而不建議用無序的id,比如uuid這種。

如下圖,左側(cè)的索引就是聚簇索引,因?yàn)閿?shù)據(jù)行在磁盤的排列和索引排序保持一致。

一起來聊聊MySQL索引結(jié)構(gòu)

索引分類

單值索引

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

隨表一起建索引: CREATE TABLE customer ( id INT(10) UNSIGNED  AUTO_INCREMENT , customer_no VARCHAR(200), customer_name VARCHAR(200), PRIMARY KEY(id), KEY (customer_name) );   單獨(dú)建單值索引: CREATE  INDEX idx_customer_name ON customer(customer_name);    刪除索引: DROP INDEX idx_customer_name  on customer;

唯一索引

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

隨表一起建索引: CREATE TABLE customer ( id INT(10) UNSIGNED  AUTO_INCREMENT , customer_no VARCHAR(200), customer_name VARCHAR(200),   PRIMARY KEY(id),   KEY (customer_name),   UNIQUE (customer_no) );    單獨(dú)建唯一索引: CREATE UNIQUE INDEX idx_customer_no ON customer(customer_no);    刪除索引: DROP INDEX idx_customer_no on customer ;

主鍵索引

設(shè)定為主鍵后數(shù)據(jù)庫會(huì)自動(dòng)建立索引,innodb為聚簇索引

隨表一起建索引: CREATE TABLE customer ( id INT(10) UNSIGNED  AUTO_INCREMENT , customer_no VARCHAR(200), customer_name VARCHAR(200),   PRIMARY KEY(id)  );     CREATE TABLE customer2 ( id INT(10) UNSIGNED   , customer_no VARCHAR(200), customer_name VARCHAR(200),   PRIMARY KEY(id)  );    單獨(dú)建主鍵索引: ALTER TABLE customer   add PRIMARY KEY customer(customer_no);     刪除建主鍵索引: ALTER TABLE customer   drop PRIMARY KEY ;     修改建主鍵索引: 必須先刪除掉(drop)原索引,再新建(add)索引

復(fù)合索引

即一個(gè)索引包含多個(gè)列

隨表一起建索引: CREATE TABLE customer ( id INT(10) UNSIGNED  AUTO_INCREMENT , customer_no VARCHAR(200), customer_name VARCHAR(200),   PRIMARY KEY(id),   KEY (customer_name),   UNIQUE (customer_name),   KEY (customer_no,customer_name) );   單獨(dú)建索引: CREATE  INDEX idx_no_name ON customer(customer_no,customer_name);    刪除索引: DROP INDEX idx_no_name  on customer ;

性能分析

索引創(chuàng)建場景

哪些情況需要?jiǎng)?chuàng)建索引

1、主鍵自動(dòng)建立唯一索引

2、頻繁作為查詢條件的字段應(yīng)該創(chuàng)建索引

3、查詢中與其它表關(guān)聯(lián)的字段,外鍵關(guān)系建立索引

4、單鍵/組合索引的選擇問題, 組合索引性價(jià)比更高

5、查詢中排序的字段,排序字段若通過索引去訪問將大大提高排序速度

6、查詢中統(tǒng)計(jì)或者分組字段

哪些情況不要?jiǎng)?chuàng)建索引

1、表記錄太少

2、經(jīng)常增刪改的表或者字段 原因:提高了查詢速度,同時(shí)卻會(huì)降低更新表的速度,如對表進(jìn)行INSERT、UPDATE和DELETE。因?yàn)楦卤頃r(shí),MySQL不僅要保存數(shù)據(jù),還要保存一下索引文件

3、Where條件里用不到的字段不創(chuàng)建索引

4、過濾性不好的不適合建索引

推薦學(xué)習(xí):mysql視頻教程

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
艳妇乳肉豪妇荡乳ⅩXXOO| 伊人久久大香线蕉无码不卡| 亚洲欧美日韩、中文字幕不卡| 亚洲鲁丝片AV无码多人| 野花高清视频免费观看完整版中文 | 久久熟女俱乐部五十路二区av| 久久久亚洲熟妇熟女中文字幕| 免费无码的AV片在线观看| 欧美人伦禁忌DVD放荡欲情| 日本毛多水多做受视频| 无码精品人妻一区二美国区三区 | 亚洲综合国产一区二区三区 | 男男野战爆了我的菊BL| 日本熟妇色XXXXX日本免费看| 天天摸天天做天天爽天天弄| 亚洲第一SE情网站| 又色又爽的无遮挡免费网址| ZOOM与牛性胶ZOOM| 国产乱人伦真实精品视频| 九九九九精品视频在线观看| 男人做一次爱能舒服多久| 色一情一乱一伦一区二区三欧美| 小怡的暴露耻辱系列小说| 一本岛V免费不卡一二三区| JULIA无码中文字幕一区| 国产精品呻吟AV久久高潮| 久久精品无码中文字幕| 情侣过夜的男生会忍住吗| 无码A级毛片免费视频内谢5J| 亚洲人成电影网站色MP4| FREE性玩弄少妇HD| 国产免费AV片无码永久免费| 看国产黄大片在线观看| 日韩成人免费VA毛片| 亚洲高清毛片一区二区| 97人人超碰国产精品最新o| 丰满人妻被公侵犯完整版| 狠狠爱无码一区二区三区| 女人不怕粗短就怕蘑菇头什么意| 玩乡下黄花小处雏女| 在公交车上弄到高C了| 粉嫩一区二区三区| 久久99国产精品久久99小说| 日本免费精品一区二区三区| 亚洲A级成人无码网站| JAVAPARSER少妇高潮| 国内精自线一二三四2021| 欧美日日日日BBBBB视频| 亚洲AV成人无码精品| AVTT天堂网久久精品| 国产女人高潮抽搐叫床视频| 男女一起差差差差差| 午夜.DJ高清免费观看视频 | 麻豆成人传媒一区二区| 天堂√在线中文官网在线| 永久免费无码国产| 国产精品538一区二区在线| 蜜臀AV无码一区二区三区| 无人区码一码二码三码区别在哪里| 中文字幕亚洲一区二区VA在线| 国产精品成熟老女人视频| 欧美成人精品激情在线观看| 亚洲AV无码专区国产乱码电影| 锕锕锕锕锕锕~好深啊电影APP| 精品国精品国产自在久国产应用男 | 亚洲线精品一区二区三区影音先锋 | 亚洲国产欧美在线人成AAAA| 成·人免费午夜无码区| 久久综合精品国产一区二区三区无| 天堂√在线中文资源网| 996热RE视频精品视频这里| 和儿媳妇在一起最幸福的句子 | 差差漫画页面在线阅读弹窗在线看| 久久精品国产大片免费观看| 体验区试看120秒啪啪免费| 97久久精品无码一区二区| 精东传媒2021精品密友第一季| 色悠久久久久综合先锋影音下载 | 成人免费视频无码专区| 老头扒开粉嫩的小缝亲吻网站| 无码人妻精一区二区三区老牛| FREEHDXXXX学生妹| 久久久噜噜噜久久| 亚洲AV无码成人精品区在线观看| 成色AU999.9是什么意思| 内射无码专区久久亚洲| 亚洲日韩欧洲乱码AV夜夜摸| 国产精品美女久久久久AV福利| 人妻激情乱人伦视频| 中国人も日本人も汉字を| 狠狠色噜噜狠狠狠8888在| 我的初苞被强开了| 大肉大捧一进一出视频出来呀| 蜜芽国产尤物AV尤物在线看| 亚洲精品无码一区二区AⅤ污美国 亚洲精品无码一区二区AⅤ污 | 成人AV鲁丝片一区二区免费| 女人自熨全过程直播| 亚洲手机看片AV| 韩国电影理伦片完整| 无码人妻一区二区三区精品视频年| 残忍开嫩苞疼哭了视频| 欧美VA亚洲VA在线观看| 伊人久久大香线蕉午夜AV| 精品久久久中文字幕人妻| 性色AV无码专区亚洲AV毛片子 | 少妇高潮潮喷到猛进猛出小说| YYYY1111少妇影院在线观| 免费无码观看的AV在线播放| 亚洲一区二区三区中文字幕在线| 果冻传媒AⅤ毛片无码| 无码专区永久免费AV网站| 夫妇联欢会回不去的夜晚| 午夜精品久久久久久久久| 无码专区一ⅤA亚洲V专区在线| 成人网站国产在线视频内射视频| 欧美大屁股流白浆XXXX视频 | 国产精品久久无码不卡黑寡妇| 色欲综合久久躁天天躁| 被男狂揉吃奶胸高潮视频在线观看 | 国产成人无码免费视频麻豆| 色老久久精品偷偷鲁| 成人欧美一区二区三区视频| 日本大学SGU大二大三| YY8090福利午夜理论片| 欧美一区二区三区红桃小说| AV一区二区三区人妻少妇| 欧美日韩精品一区二区在线播放| 97人妻碰碰碰久久久久禁片| 女邻居给我口爆18P| AAA欧美色吧激情视频| 欧美久久高潮久久高潮| FREESEX性中国熟妇| 人妻无码久久中文字幕专区| 把腿张开老子臊烂你多P| 日本黄色网址日本| 丰满人妻一区二区三区Aⅴ在线| 色狠狠熟女AV一区二区三区| 粉嫩粉嫩的18在线免免费观看| 天天躁夜夜躁狠狠躁2021| 国产精品麻豆成人AV电影艾秋| 小雪你的奶好大把腿张开| 国内精品伊人久久久影视| 亚洲AV之男人的天堂网站| 精品久久一卡2卡三卡4卡分区| 亚洲午夜精品久久久久久APP| 久久人妻AV中文字幕| 坐公交车居然被弄了2个小时| 欧美白人最猛性XXXXX69交| WWW国产精品内射熟女| 三个男人换着躁我一| 国产高颜值大学生情侣酒店| 亚洲AV成人综合网伊人APP| 精品久久久久久狼人社区| 永久免费的啪啪免费网址| 欧美黑人又大又粗又长久久久| 啊灬啊灬啊灬快灬高潮少妇软件| 日韩精品无码综合福利网| 国产精口品美女乱子伦高潮| 亚洲AV中文无码乱人伦在线视色| 久久久WWW成人免费看片| 91精品人妻人人做人碰人人爽| 人妻 日韩 欧美 综合 制服| 公翁大龟挺进秀婷全文免费阅读| 西西里大但人文艺术~任汾| 精品无码久久久久久国产| 中文字幕乱码亚洲∧V日本| 人妻美妇疯狂迎合系列视频| 国产成人精品三级麻豆| 亚洲成人片在线观看| 免费无码久久成人网站入口| 被公疯狂进入的美丽人妻| 无码人妻精品一区二区三区免费看| 精品久久久久久狼人社区| 97人妻人人做人碰人人爽| 色综合久久久久久久久五月| 国产在视频线精品视频| 在公车被灌满JING液| 日韩中文无码有码免费视频| 国产无遮挡裸体免费直播| 荫蒂添的好舒服视频囗交| 日本熟妇人妻XXⅩHD| 国产自无码视频在线观看| 中国高清WINDOWS视频软件| 日韩A片无码ⅩXXXX| 国语自产偷拍精品视频| 中文字幕一区二区人妻| 少妇厨房愉情理9仑片视频| 激情内射日本一区二区三区| 50岁退休熟女露脸高潮| 调教秘书跪趴撅起来打光屁股作文| 精品亚洲AV无码喷奶水A漫画| JAPANESE失禁潮喷| 午夜亚洲国产理论片亚洲2020| 久久综合九色综合欧美狠狠| 大乳丰满人妻中文字幕日本| 亚洲乱码一区AV春药高潮图片| 人成AAAAA毛天堂片| 激情欧美成人久久综合| 锕锕锕锕锕锕锕好大污下载| 亚洲成AⅤ人的天堂在线观看女人|