不要再誤解MySQL in的用法了!

藏色散人
發布: 2022-11-04 16:45:44
轉載
1943 人瀏覽過

背景:群組內某小夥伴說 in 走不走索引是跟 in 裡面的字串多少有關係,超過多少字串長度後,就不會走索引。

其實,這種認知是錯的, 大家都被不少轉載的文章給欺騙了! ! !

真正影響 in 走不走索引的取決於 in 裡面符合條件的資料佔比多少,從而影響 mysql 是否走索引!

之前我測試是符合in 的數據超過40%(這個閥值不一定是40%,只是之前本人測試是40% 左右會不走索引,這個也受mysql 版本影響)之後,就開始走全表,不走索引

實作:

#圖1:

不要再誤解MySQL in的用法了!

圖2:

不要再誤解MySQL in的用法了!

圖3:

不要再誤解MySQL in的用法了!

##圖4:

不要再誤解MySQL in的用法了!

圖5:

不要再誤解MySQL in的用法了!

如上圖所示,當不考慮回表影響、覆蓋索引的情況下,in 中符合資料佔整表資料較多的時候,會開始走全表掃描,不走索引。

另外特別說明

1. 當in 單一值的時候,mysql 會自動最佳化為= ,故還是會走索引

2.當in 和select 的列為同一個的時候,由於不需要走回表的情況下,會走覆蓋索引#推薦學習:《
MySQL影片教學

》#### ##

以上是不要再誤解MySQL in的用法了!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:learnku.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板