mysql explain解析一 extra中的using index,using where,using index condition


1.簡單介紹

using index 和using where只要使用了索引我們基本都能經常看到,而using index condition則是在mysql5.6后新加的新特性,我們先來看看mysql文檔對using index condition的描述

附上mysql文檔鏈接:https://dev.mysql.com/doc/refman/5.7/en/index-condition-pushdown-optimization.html

簡單來說,mysql開啟了ICP的話,可以減少存儲引擎訪問基表的次數

下面來簡單的介紹一下這三者的區別

using index :使用覆蓋索引的時候就會出現

using where:在查找使用索引的情況下,需要回表去查詢所需的數據

using index condition:查找使用了索引,但是需要回表查詢數據

using index & using where:查找使用了索引,但是需要的數據都在索引列中能找到,所以不需要回表查詢數據

以上四點就能看出它們之前的區別,或許有部分人都存在疑惑 using index & using where 和using index condition那個比較好,從上面的的解釋中就能看出是前者比較好,畢竟不需要回表查詢數據,效率上應該比較快的

下面是在stackoverflow中找到的答案:

附上stackoverflow鏈接:https://stackoverflow.com/questions/28759576/mysql-using-index-condition-vs-using-where-using-index

 

2.測試驗證

(1)建立一個userinfo表,其字段信息如下圖所示:

 

(2)查詢測試

(2.1)測試Using index

覆蓋索引,但是沒有使用查詢條件,所以只有Using index

(2.2)測試Using index & Using where

覆蓋索引,但是后面帶了查詢條件,所以也用了Using where查詢索引

(2.3)測試Using index condition

因為本人用的是mysql版本是5.5,所以顯示了Using where,如果用5.6以上的版本應該就會顯示Using index condition,個人認為,Using index condition其實就是優化了Using where這種情況,有條件的也可以自己寫個demo測試一下

以上皆為個人理解,如果有理解錯的地方,歡迎指出

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM