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

MySQLl優(yōu)化:為什么要用覆蓋索引?

數(shù)據(jù)庫 MySQL
覆蓋索引是一種利用二級索引的葉子節(jié)點包含了所有需要查詢的列數(shù)據(jù),從而避免回表操作的查詢方式。回表操作是指通過二級索引找到主鍵值,再根據(jù)主鍵值在聚簇索引中查找完整的記錄。

引言:

覆蓋索引是一種利用二級索引的葉子節(jié)點包含了所有需要查詢的列數(shù)據(jù),從而避免回表操作的查詢方式。回表操作是指通過二級索引找到主鍵值,再根據(jù)主鍵值在聚簇索引中查找完整的記錄。回表操作會增加磁盤的隨機IO,降低查詢效率。使用覆蓋索引可以減少樹的搜索次數(shù),提升查詢性能。

先了解三個概念:

InnoDB索引模型:

在InnoDB中,表都是根據(jù)主鍵順序以索引的形式存放的,這種存儲方式的表稱為索引組織表。InnoDB使用了B+樹索引模型,所以數(shù)據(jù)都是存儲在B+樹中的。

主鍵索引和非主鍵索引的區(qū)別

主鍵索引又叫聚簇索引,非主鍵索引又叫普通索引,那么這兩種索引有什么區(qū)別呢?

主鍵索引的葉子節(jié)點存放的是整行數(shù)據(jù),非主鍵索引的葉子節(jié)點存放的是主鍵的值。

假設有一張User表(id,age,name,address),其中有id和age兩個字段,其中id是主鍵,age是普通索引,有幾行數(shù)據(jù)u1-u5的(id,age)的值是(100,1)、(200,2)、(300,3)、(500,5)和(600,6) ,此時的兩棵樹的示例如下:

從上圖可以看出來,基于主鍵索引的樹的葉子節(jié)點存放的是整行User數(shù)據(jù),基于普通索引age的葉子節(jié)點存放的是id(主鍵)的值。

總結(jié)區(qū)別:

  • 聚簇索引是指按照數(shù)據(jù)的物理順序存儲的索引,通常是主鍵索引。聚簇索引的葉子節(jié)點直接存儲了數(shù)據(jù)行,因此通過聚簇索引可以快速找到數(shù)據(jù)。一個表只能有一個聚簇索引。
  • 非聚簇索引是指按照數(shù)據(jù)的邏輯順序存儲的索引,通常是普通索引或唯一索引。非聚簇索引的葉子節(jié)點存儲了主鍵值或者指針,因此通過非聚簇索引需要再次回表查詢數(shù)據(jù)。一個表可以有多個非聚簇索引。
  • 聚簇索引和非聚簇索引的性能優(yōu)劣取決于查詢語句和數(shù)據(jù)量。一般來說,聚簇索引對于范圍查詢和全表掃描更有優(yōu)勢,而非聚簇索引對于單點查詢和覆蓋查詢更有優(yōu)勢。

什么是回表?

假設有一條查詢語句如下:

select * from user where age=3;

上面這條sql語句執(zhí)行的過程如下:

  1. 根據(jù)age這個普通索引在age索引樹上搜索,得到主鍵id的值為300。
  2. 因為age索引樹并沒有存儲User的全部數(shù)據(jù),因此需要根據(jù)在age索引樹上查詢到的主鍵id的值300再到id索引樹搜索一次,查詢到了u3。
  3. 返回結(jié)果。

上述執(zhí)行的過程中,從age索引樹再到id索引樹的查詢的過程叫做回表(回到主鍵索引樹搜索的過程)。

也就是說通過非主鍵索引的查詢需要多掃描一棵索引樹,因此需要盡量使用主鍵索引查詢。

為什么使用覆蓋索引?

有了上述提及到的幾個概念,便能很清楚的理解為什么覆蓋索引能夠提升查詢效率了,因為少了一次回表的過程。

假設我們使用覆蓋索引查詢,語句如下:

select id from user where age=3;

這條語句執(zhí)行過程很簡單,直接在age索引樹中二級索引葉子節(jié)點就能查詢到id的值,不用再去id索引樹中查找其他的數(shù)據(jù),避免了回表。

總結(jié):

覆蓋索引的使用能夠減少樹的搜索次數(shù),避免了回表,顯著提升了查詢性能,因此覆蓋索引是一個常用的性能優(yōu)化手段。


責任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2021-12-13 01:40:29

ElasticSear倒排索引

2009-01-09 23:06:41

服務器SCSI硬盤PC

2020-04-07 16:12:56

Go編程語言開發(fā)

2019-03-14 09:51:50

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

2019-09-24 09:33:53

MySQLB+樹InnoDB

2024-07-02 13:27:38

2021-05-11 06:57:15

HBaseBATJ公司

2024-01-02 17:28:12

芯片CPUAI計算

2015-04-21 13:09:01

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

2022-05-07 07:35:44

工具讀寫鎖Java

2015-07-01 10:25:07

Docker開源項目容器

2016-01-12 16:58:31

C游戲

2022-07-06 09:29:40

JMH性能測試

2020-01-22 16:36:52

MYSQL開源數(shù)據(jù)庫

2017-09-05 12:44:15

MySQLSQL優(yōu)化覆蓋索引

2024-06-19 10:26:36

非阻塞IO客戶端

2018-05-14 11:07:48

服務器Linux系統(tǒng)

2021-02-09 20:51:13

D 語言腳本編程語言

2011-02-22 09:50:21

2022-07-13 07:06:47

HTTPSHTTP協(xié)議
點贊
收藏

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

主站蜘蛛池模板: 欧美片网站免费 | 黄色三级在线播放 | 国产91丝袜在线播放 | 午夜理伦三级理论三级在线观看 | 日韩成人免费 | 日本国产一区二区 | 亚洲综合伊人 | 免费精品 | 99精品欧美一区二区三区 | 中文二区 | 亚洲人精品午夜 | 欧美日韩1区2区3区 欧美久久一区 | 中文字幕日韩一区 | 国产污视频在线 | 91综合在线视频 | 超碰在线免费 | 欧美成人精品一区二区三区 | 国产精品久久久久久久午夜片 | 黄色成人在线 | 精品成人佐山爱一区二区 | 日韩欧美在线视频观看 | 九色在线视频 | 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 日韩1区2区| 欧美一区二区三区免费电影 | 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 精品视频国产 | 欧美精品一区二区免费 | 欧美一区二区三区在线 | 午夜一区二区三区视频 | 国产成人福利视频 | 午夜看电影在线观看 | 99亚洲精品 | 九九九视频在线观看 | 毛片在线看片 | 精品久久久一区二区 | 日韩综合 | 青青久草| av黄色片 | 久久久久久久综合色一本 | 欧美国产亚洲一区二区 |