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

一分鐘帶你學會MySQL覆蓋索引,讓你的SQL更高效

數據庫 MySQL
在我們查詢SQL時,我們不僅要考慮where條件是否匹配了索引,還要盡量考慮查詢的字段是否可以通過索引直接獲取,覆蓋索引可以減少樹的搜索次數,顯著的提升SQL查詢性能。

覆蓋索引是MySQL優化sql性能的一種非常重要而且常用的手段,通過覆蓋索引,我們可以直接查詢到需要的結果,而不用回表,從而大大減少樹的搜索次數,非常明顯的提升查詢性能。

數據如何存儲與查找

我們知道,MySQL的數據都是存儲在B+樹上的,每一個索引都代表一個B+樹。

對于主鍵索引,葉子節點存儲的是一行記錄的所有字段值(邏輯上),而非主鍵索引的葉子節點存儲的是主鍵值,非葉子節點存儲的是索引以及指向數據的指針。

那我們查詢數據的時候,MySQL是如何執行的呢?

以主鍵索引為例,就是在主鍵索引樹上,從根節點出發,一直向下查找,直到找到符合條件的記錄。

如果我們要查下圖中的User2節點,那么查找路徑就是UserA->UserC->UserF->User2。

回表

只按照主鍵查詢是一種理想中的狀態,隨著業務逐漸復雜,表中的字段會越來越多,我們也會建立更多的非主鍵索引以應對業務帶來的挑戰。

但是非主鍵索引會帶來一個問題:回表。

以下面這條sql為例:

select * from t where m in (3,4);

我們在表t的m字段上設置一個索引,那么這條sql的執行流程就是:

  1. 在索引樹m上,找到記錄3,獲取到主鍵id,比如id=100;
  2. 拿著100這個id去主鍵索引樹上,獲取到這一行的數據;
  3. 在索引樹m上,找到記錄4,獲取到主鍵id,比如id=101;
  4. 拿著101這個id去主鍵索引樹上,獲取到這一行的數據;
  5. 在索引樹上查找下一個記錄5(不一定是5,這里的5只是代表記錄4后面的一條記錄),記錄5不符合查詢條件,結束查詢。

在上面的流程中,步驟2,4代表了回主鍵索引樹搜索,這個動作就叫做回表。

而MySQL之所以做回表這個動作,是因為我們要查的數據 select *,只有在主鍵索引樹上才有,所以不得不回表查詢。

覆蓋索引

如果我們把上面的sql改成下面這樣:

select id from t where m in (3,4);

這個時候只需要查詢id就行,而id這個值已經在m索引樹上了,這時就不用再回表了,可以直接提供查詢結果。

可以說,索引m覆蓋了我們的查詢請求,這種情況我們就稱為覆蓋索引。

這也是為什么我們在很多MySQL規范中可以看到,要求我們查詢數據時盡量避免"select *",就是因為"select *"會導致覆蓋索引失效,從而引起強制回表,sql性能可能大幅下降。

最后

在我們查詢SQL時,我們不僅要考慮where條件是否匹配了索引,還要盡量考慮查詢的字段是否可以通過索引直接獲取,覆蓋索引可以減少樹的搜索次數,顯著的提升SQL查詢性能。

責任編輯:姜華 來源: 今日頭條
相關推薦

2015-11-12 10:32:40

GitHub控制系統分布式

2017-07-06 08:12:02

索引查詢SQL

2016-09-12 17:28:45

云存儲應用軟件存儲設備

2019-02-28 15:04:36

顯卡兼容芯片

2017-03-30 19:28:26

HBase分布式數據

2022-06-02 08:46:04

網卡網絡服務器

2025-01-20 13:30:00

Linux系統Ansible

2020-05-21 19:46:19

區塊鏈數字貨幣比特幣

2018-06-26 05:23:19

線程安全函數代碼

2022-07-18 06:16:07

單點登錄系統

2017-02-21 13:00:27

LoadAverage負載Load

2018-07-31 16:10:51

Redo Undo數據庫數據

2011-02-21 17:48:35

vsFTPd

2018-08-17 07:19:34

網絡故障硬件軟件

2018-12-12 22:51:24

Java包裝語言

2020-07-17 07:44:25

云計算邊緣計算IT

2020-07-09 07:37:06

數據庫Redis工具

2021-09-28 14:02:19

電腦主板黑屏

2023-03-10 13:29:00

MySQLCount函數

2020-06-11 08:04:12

WDMDWDMMWDM
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 男人的天堂一级片 | 91精品综合久久久久久五月天 | 久久国产精品免费一区二区三区 | 丁香婷婷成人 | 久久久国产精品网站 | 狠狠艹 | 精品国产一区二区三区四区在线 | 亚洲美女在线一区 | 久色激情| 天天操夜夜拍 | 亚洲视频在线看 | 最新黄色毛片 | 国产精品久久99 | 中文字幕av免费 | 欧美日韩一区精品 | 九九热精| 亚洲一级毛片 | 中日字幕大片在线播放 | 99re在线视频| 亚洲精品视频在线观看免费 | 国产日批| 欧美一区二区三区在线 | 黑人一级黄色大片 | 国产一区视频在线 | 午夜影院网站 | 亚洲欧美综合 | 国内自拍视频在线观看 | 亚洲品质自拍视频网站 | 视频一区二区三区中文字幕 | 精品久久国产 | 91综合网| 粉嫩一区二区三区性色av | 国产精品亚洲一区 | 国产不卡在线观看 | 久久久妇女国产精品影视 | 欧美视频二区 | 黄色成人在线网站 | 国产一区二区三区 | 亚洲一区二区三区国产 | 午夜寂寞影院列表 | 天堂久久久久久久 |