91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mysql索引下推有什么作用

發布時間:2021-11-04 16:06:46 來源:億速云 閱讀:322 作者:iii 欄目:MySQL數據庫

這篇文章主要講解了“Mysql索引下推有什么作用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Mysql索引下推有什么作用”吧!

導讀

索引下推(index condition pushdown )簡稱ICP,在Mysql5.6的版本上推出,用于優化查詢。

在不使用ICP的情況下,在使用非主鍵索引(又叫普通索引或者二級索引)進行查詢時,存儲引擎通過索引檢索到數據,然后返回給MySQL服務器,服務器然后判斷數據是否符合條件 。

在使用ICP的情況下,如果存在某些被索引的列的判斷條件時,MySQL服務器將這一部分判斷條件傳遞給存儲引擎,然后由存儲引擎通過判斷索引是否符合MySQL服務器傳遞的條件,只有當索引符合條件時才會將數據檢索出來返回給MySQL服務器 。

索引條件下推優化可以減少存儲引擎查詢基礎表的次數,也可以減少MySQL服務器從存儲引擎接收數據的次數。

【推薦學習:mysql視頻教程】

開擼

在開始之前先先準備一張用戶表(user),其中主要幾個字段有:id、name、age、address。建立聯合索引(name,age)。

假設有一個需求,要求匹配姓名第一個為陳的所有用戶,sql語句如下:

SELECT * from user where  name like '陳%'

根據 "最佳左前綴" 的原則,這里使用了聯合索引(name,age)進行了查詢,性能要比全表掃描肯定要高。

問題來了,如果有其他的條件呢?假設又有一個需求,要求匹配姓名第一個字為陳,年齡為20歲的用戶,此時的sql語句如下:

SELECT * from user where  name like '陳%' and age=20

這條sql語句應該如何執行呢?下面對Mysql5.6之前版本和之后版本進行分析。

Mysql5.6之前的版本

5.6之前的版本是沒有索引下推這個優化的,因此執行的過程如下圖:

Mysql索引下推有什么作用

會忽略age這個字段,直接通過name進行查詢,在(name,age)這課樹上查找到了兩個結果,id分別為2,1,然后拿著取到的id值一次次的回表查詢,因此這個過程需要回表兩次。

Mysql5.6及之后版本

5.6版本添加了索引下推這個優化,執行的過程如下圖:

Mysql索引下推有什么作用

InnoDB并沒有忽略age這個字段,而是在索引內部就判斷了age是否等于20,對于不等于20的記錄直接跳過,因此在(name,age)這棵索引樹中只匹配到了一個記錄,此時拿著這個id去主鍵索引樹中回表查詢全部數據,這個過程只需要回表一次。

實踐

當然上述的分析只是原理上的,我們可以實戰分析一下,因此陳某裝了Mysql5.6版本的Mysql,解析了上述的語句,如下圖:

Mysql索引下推有什么作用

根據explain解析結果可以看出Extra的值為Using index condition,表示已經使用了索引下推。

感謝各位的閱讀,以上就是“Mysql索引下推有什么作用”的內容了,經過本文的學習后,相信大家對Mysql索引下推有什么作用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

日土县| 贵州省| 环江| 酒泉市| 灵山县| 辰溪县| 三门峡市| 阿尔山市| 读书| 南通市| 黑河市| 田阳县| 富锦市| 泸西县| 山阳县| 长海县| 宁陵县| 南华县| 札达县| 司法| 鹤岗市| 应城市| 延津县| 澄城县| 滦平县| 河津市| 疏附县| 绵竹市| 济宁市| 永州市| 太仓市| 灵台县| 蒙山县| 阜平县| 肃北| 文登市| 东平县| 昌吉市| 会理县| 根河市| 新邵县|