<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前言:
有讀者可能會一臉懵?
啥是索引潛水?
你給起的名字的嗎?有沒有索引蛙泳?
這個名字還真不是我起的,今天要講的知識點就叫索引潛水(Index dive) 。
先要從一件怪事說起:
我先造點資料復現一下問題,建立一張使用者表:
CREATE TABLE `user` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `name` varchar(100) NOT NULL DEFAULT '' COMMENT '姓名', `age` int(11) NOT NULL DEFAULT 0 COMMENT '年齡', PRIMARY KEY (`id`), KEY `idx_age` (`age`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
通過一批使用者年齡,查詢該年齡的使用者資訊,並檢視一下SQL執行計劃:
explain select * from user where age in (1,2,3,4,5,6,7,8,9);
where條件中有9個引數,重點關注一下執行計劃中的預估掃描行數為279行。
到這裡沒什麼問題,預估的非常準,實際就是279行。
但是,問題來了,當我們在where條件中,再加一個引數,變成了10個引數,預估掃描行數本應該增加,結果卻大大減少了。
explain select * from user where age in (1,2,3,4,5,6,7,8,9,10);
一下子減少到了30行,可是實際行數是多少呢?
實際是310行,預估掃描行數是30行,真是錯到姥姥家了。
MySQL咋回事啊,到底還能不能預估?
不能預估的話,換其他人!
大家肯定也是滿臉疑惑,直到我去官網上看到了一個詞語,索引潛水(Index dive) 。
跟這個詞語相關的,還有一個設定引數 eq_range_index_dive_limit。
MySQL5.7.3之前的版本,這個值預設是10,之後的版本,這個值預設是200。
可以使用命令檢視一下這個值的大小:
show variables like '%eq_range_index_dive_limit%';
當然,我們也可以手動修改這個值的大小:
set eq_range_index_dive_limit=200;
這個 eq_range_index_dive_limit 設定的作用就是:
當where語句in條件中引數個數小於這個值的時候,MySQL就採用索引潛水(Index dive) 的方式預估掃描行數,非常準確。
當where語句in條件中引數個數大於等於這個值的時候,MySQL就採用另一種方式索引統計(Index statistics) 預估掃描行數,誤差較大。
MySQL為什麼要這麼做呢?
都用索引潛水(Index dive) 的方式預估掃描行數,不好嗎?
其實這是基於成本的考慮,索引潛水估算成本較高,適合小資料量。索引統計估算成本較低,適合巨量資料量。
一般情況下,我們的where語句的in條件的引數不會太多,適合使用索引潛水預估掃描行數。
建議還在使用MySQL5.7.3之前版本的同學們,手動修改一下索引潛水的設定引數,改成合適的數值。
如果你們專案中in條件最多有500個引數,就把設定引數改成501。
這樣MySQL預估掃描行數更準確,可以選擇更合適的索引。
到此這篇關於MySQL查詢效能優化七種方式索引潛水的文章就介紹到這了,更多相關MySQL查詢優化內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45