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

MySQL:好好的索引,為什么要下推?

數(shù)據(jù)庫 MySQL
前段時間有讀者提議講講索引下推,這期就把這事兒安排上。多余的前言就不贅述了,我們直接開始。

本文轉(zhuǎn)載自微信公眾號「IT界農(nóng)民工」,作者萊烏。轉(zhuǎn)載本文請聯(lián)系IT界農(nóng)民工公眾號。

前段時間有讀者提議講講索引下推,這期就把這事兒安排上。多余的前言就不贅述了,我們直接開始。

列位坐好!

 

- 思維導(dǎo)圖 -

回表操作

對于數(shù)據(jù)庫來說,只要涉及到索引,必然繞不過去回表操作。當然這也是我們今天所講內(nèi)容的前調(diào)基礎(chǔ)。

說到回表,我們需要從索引開始說起。別擔心,不會長篇大論,這里只是簡單講下主鍵索引與普通索引,目的是讓大家對回表操作有個認識。如果你對回表操作很熟悉了,那么可以跳過這一段。

這里我們只以 Innodb 存儲引擎作為講解對象。

主鍵索引

主鍵索引在底層的數(shù)據(jù)存儲是通過 B+ 樹來實現(xiàn)的。簡單來說,就是除葉子節(jié)之外的其他節(jié)點都存儲的是主鍵值。而葉子節(jié)點上存儲的是整行的數(shù)據(jù)。

大體結(jié)構(gòu)如下圖所示。

 

非主鍵索引

除了主鍵索引外,其它的索引都被稱為非主鍵索引。與主鍵索引不同的是,非主鍵索引的葉子節(jié)點上存儲的是主鍵的值。

 

那讓我們再回到開始的問題,什么是回表操作?

當我們在非主鍵索引上查找一行數(shù)據(jù)的時候,此時的查找方式是先搜索非主鍵索引樹,拿到對應(yīng)的主鍵值,再到主鍵索引樹上查找對應(yīng)的行數(shù)據(jù)。

這種操作就叫作回表操作。

好了,這里你應(yīng)該了解了什么是回表操作了。簡單來講,就是在非主鍵索引樹上拿到對應(yīng)的主鍵值,然后回到主鍵索引上找到對應(yīng)的行數(shù)據(jù)。

這樣做的前提條件是,所要查找的字段不存在于非主鍵索引樹上。

低版本操作

講完了回表操作,讓我們繼續(xù)回到這篇文章的主題——索引下推。

其實在 Mysql 5.6 版本之前是沒有索引下推這個功能的,從 5.6 版本后才加上了這個優(yōu)化項。所以在引出索引下推前還是先回顧下沒有這個功能時是怎樣一種處理方式。

我們以一個真實例子來進行講解。

在這里有張用戶表 user,記錄著用戶的姓名,性別,身高,年齡等信息。表中 id 是自增主鍵,(name,sex) 是聯(lián)合索引。在這里用 1 表示男,2 表示女。現(xiàn)在需要查找所有姓王的男性信息。

SQL 實現(xiàn)起來很簡單:

 

但是它的實現(xiàn)原理是什么呢?

根據(jù)聯(lián)合索引最左前綴原則,我們在非主鍵索引樹上找到第一個滿足條件的值時,通過葉子節(jié)點記錄的主鍵值再回到主鍵索引樹上查找到對應(yīng)的行數(shù)據(jù),再對比是否為當前所要查找的性別。

整個原理可以用下邊的圖進行表示。


 

 

看到了吧,低版本中需要每條數(shù)據(jù)都進行回表,增加了樹的搜索次數(shù)。如果遇到所要查找的數(shù)據(jù)量很大的話,性能必然有所缺失。

高版本操作

講完了低版本操作,讓我們繼續(xù)回到這篇文章的主題——索引下推。

知道了痛點,那么怎么解決。很簡單,只有符合條件了再進行回表。結(jié)合我們的例子來說就是當滿足了性別 sex = 1 了,再回表查找。這樣原本可能需要進行回表查找 4 次,現(xiàn)在可能只需要 2 次就可以了。

 

所以本質(zhì)來說,索引下推就是只有符合條件再進行回表,對索引中包含的字段先進行判斷,不符合條件的跳過。減少了不必要的回表操作。

總結(jié)

回表操作

當所要查找的字段不在非主鍵索引樹上時,需要通過葉子節(jié)點的主鍵值去主鍵索引上獲取對應(yīng)的行數(shù)據(jù),這個過程稱為回表操作。

索引下推

索引下推主要是減少了不必要的回表操作。對于查找出來的數(shù)據(jù),先過濾掉不符合條件的,其余的再去主鍵索引樹上查找。

 

責任編輯:武曉燕 來源: IT界農(nóng)民工
相關(guān)推薦

2019-11-01 15:50:06

MySQLES搜索引擎

2024-12-24 14:11:57

2018-01-17 09:32:07

前后端分離架構(gòu)

2017-07-17 09:29:41

MySQL索引測試

2017-07-11 09:22:23

MySQL索引測試

2022-01-05 12:03:48

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

2017-08-31 09:19:50

硬盤服務(wù)器云存儲

2013-03-12 14:30:09

Ubuntu操作系統(tǒng)

2015-08-06 10:14:15

造輪子facebook

2022-08-15 08:27:02

基站網(wǎng)絡(luò)

2020-12-11 07:39:37

RPC MQ架構(gòu)

2024-03-25 13:02:00

MySQL索引主鍵

2018-05-23 00:20:29

2019-09-30 07:50:51

ITOps云端ITOM

2019-12-26 14:52:31

微軟CortanaAndroid

2016-08-19 16:27:52

數(shù)據(jù)庫Mongo DB開發(fā)

2017-04-05 18:10:05

R語言開發(fā)Ross

2021-03-16 08:35:14

Kubernetes Docker容器

2022-03-30 08:21:57

合并HTTP

2012-06-18 14:51:09

Python
點贊
收藏

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

主站蜘蛛池模板: 激情av免费看 | 国产福利91精品 | 亚洲欧美日韩在线一区二区 | 国产一区二区三区在线看 | 亚洲码欧美码一区二区三区 | 久久精品99 | 成人日批视频 | 国产欧美日韩精品一区二区三区 | 在线视频中文字幕 | 欧美精品福利 | 精品欧美一区二区三区久久久 | 国产精品一区二区三区久久久 | 午夜三区| 小川阿佐美pgd-606在线 | 91精品国产91久久久久久最新 | 亚洲免费人成在线视频观看 | 国产精品久久国产精品 | 久久久精品视 | 国产美女视频一区 | www,黄色,com| 日本不卡一区二区三区在线观看 | 久久国产精品免费一区二区三区 | 一区二区三区视频在线观看 | 中文字幕在线不卡播放 | 成人自拍视频网站 | 黄网站免费在线看 | 黄色一级毛片免费看 | 欧美三级视频在线观看 | 综合自拍 | 色综合99 | 国产精品一区二区视频 | 欧美成人在线免费 | 国产一区二区三区久久久久久久久 | 久草在线影 | 亚洲视频三区 | 亚洲成人自拍网 | 欧美片网站免费 | 精品国产色 | 国产精品毛片一区二区在线看 | 在线播放国产一区二区三区 | 国产精品成人一区二区 |