精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一文帶你掌握in到底走不走索引?啥情況能走啥情況不能走

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
總體來(lái)說(shuō),in后面條件越少越好,假設(shè)一張表有1000萬(wàn)條數(shù)據(jù),in后面的條件有10000個(gè),這時(shí)候就算走了range索引,估計(jì)效率也好不到哪里。

in到底用不用索引感覺(jué)像一樁懸疑片!古早時(shí)期的面經(jīng),統(tǒng)一說(shuō)不走索引,在一些程序員腦海中從此留下不可磨滅的印記。有些從業(yè)時(shí)間較長(zhǎng)的程序員腦子里的第一反應(yīng)就是不走索引,上個(gè)月我就曾經(jīng)被同事這樣質(zhì)疑過(guò)。

但是那是mysql5.5以前的老黃歷了,現(xiàn)在都到8.0+了,5.5(甚至更早)以后可以肯定的是它會(huì)走索引。但必然走索引嗎?不一定。

我搜索引擎上搜索關(guān)鍵詞 in/or 和 索引,出來(lái)一大片文章,一般都會(huì)說(shuō),in/or能走索引,但后面跟的條件個(gè)數(shù)多了就不走索引了。但問(wèn)題就來(lái)了,這個(gè)多了到底是多少才算多?對(duì)于一個(gè)動(dòng)態(tài)查詢的SQL,我咋知道到底走不走索引?如何量化計(jì)算呢?

這時(shí)候就語(yǔ)焉不詳或者直接跳過(guò)。

大名鼎鼎的《阿里巴巴JAVA開(kāi)發(fā)規(guī)范》倒是一刀切。最好不超過(guò)1000。

圖片圖片

人家這規(guī)范只是推薦,也不是強(qiáng)制,是吧,不能吐槽。

而且超過(guò)1000就算用上了range級(jí)別的查詢,那可能也快不到哪里去啊,對(duì)于要求快速響應(yīng)的互聯(lián)網(wǎng)需求來(lái)說(shuō)這推薦好像沒(méi)毛病。

但這不是重點(diǎn),今天的重點(diǎn)在于,我一定要搞清楚,在保證explain 的type為range而不是ALL全表掃描的前提下,到底select * from table where id in (1,2,3.....x)這個(gè)x能到多少。

問(wèn)題

首先建一張測(cè)試表,來(lái)一步復(fù)現(xiàn)一下,走與不走索引的情況。

mysql

版本:5.7.19 引擎:innodb

創(chuàng)建一個(gè)測(cè)試表

sql

 代碼解讀
復(fù)制代碼CREATE TABLE `t_person` (
  `id` int(11) NOT NULL,
  `name` varchar(10) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

使用SQL

EXPLAIN SELECT id, NAME FROM t_person WHERE id IN (1)

查看執(zhí)行計(jì)劃

圖片圖片

此時(shí)表里無(wú)數(shù)據(jù),顯示的是no matching row in const table.

少量數(shù)據(jù)

插入一條數(shù)據(jù)insert t_person (id,name) values(1,'張三')

使用SQL

EXPLAIN SELECT id, NAME FROM t_person WHERE id IN (1)

查看執(zhí)行計(jì)劃

圖片圖片

使用了索引,還是效率最高的const(system生產(chǎn)環(huán)境不可能的吧),此時(shí)id in(1)相當(dāng)于 id = 1。

在in里增加點(diǎn)條件。

sql變成EXPLAIN SELECT id, NAME FROM t_person WHERE id IN (1, 2)

查看執(zhí)行計(jì)劃

圖片圖片

使用了索引,但級(jí)別下降到了range,即范圍索引。

繼續(xù)在in里增加條件。

sql變成EXPLAIN SELECT id, NAME FROM t_person WHERE id IN (1, 2,3)

查看執(zhí)行計(jì)劃

圖片圖片

索引級(jí)別變成了ALL,即全表掃描,其實(shí)是索引失效了。

再往表里插入兩條數(shù)據(jù)。此時(shí)總共3條數(shù)據(jù)。

scss

 代碼解讀
復(fù)制代碼insert t_person (id,name) values(2,'李四')
insert t_person (id,name) values(3,'王五')

再使用sqlEXPLAIN SELECT id, NAME FROM t_person WHERE id IN (1, 2,3)

查看執(zhí)行計(jì)劃

圖片圖片

可以看到,隨時(shí)表數(shù)據(jù)的增加,同樣的sql執(zhí)行計(jì)劃從ALL變回了range,索引又生效了。

同樣地,再增加一個(gè)in條件,EXPLAIN SELECT id, NAME FROM t_person WHERE id IN (1,2,3,4)的執(zhí)行計(jì)劃又變回了ALL,這里就不放圖了。

多點(diǎn)數(shù)據(jù)

以上只是小打小鬧撒撒水啦,總共幾條數(shù)據(jù),in的條件都快超過(guò)表數(shù)據(jù)了,執(zhí)行計(jì)算都不用預(yù)估就知道全表掃描還好一點(diǎn)啦。

我再往表里插入100萬(wàn)條數(shù)據(jù)。

圖片圖片

我先按照阿里的開(kāi)發(fā)規(guī)范推薦的1000這個(gè)值作為臨界值,先使用900個(gè)條件

圖片圖片

再使用1100個(gè)條件

圖片圖片

上圖表明,這兩種情況都使用到了range范圍索引呢。

再加大劑量,直接上10萬(wàn)。

圖片圖片

步子邁大了,咔,這下終于全表掃描了。

但是還是沒(méi)找到臨界值。

官網(wǎng)上尋找答案

dev.mysql.com/doc/refman/…

我在這里尋找到了一個(gè)參數(shù),描述的倒像是相似的問(wèn)題。

圖片圖片

這個(gè)方法說(shuō)的是當(dāng)使用in或or查詢時(shí),比如where in(1,2,3),執(zhí)行引擎會(huì)先預(yù)估表中的數(shù)量,表中的數(shù)量將決定使用的查詢方式,比如,如果表中只有3條數(shù)據(jù),那么很明顯,這時(shí)候直接全表掃描。

而這個(gè)預(yù)估的方法有2種,一是dive到index中即利用索引完成元組數(shù)的估算,簡(jiǎn)稱index dive; 二是使用索引的統(tǒng)計(jì)數(shù)值,進(jìn)行估算.

相比這2種方式,在效果上:

  • index dive: 速度慢,但能得到精確的值(MySQL的實(shí)現(xiàn)是數(shù)索引對(duì)應(yīng)的索引項(xiàng)個(gè)數(shù),所以精確)
  • index statistics: 速度快,但得到的值未必精確.

但eq_range_index_dive_limit這個(gè)參數(shù)確實(shí)跟今天的主題相關(guān)系數(shù)不大。很明顯,這個(gè)值在mysql 5.7是200, 一開(kāi)始的in后面的條件個(gè)數(shù)就是900,依然是走了range索引的。

stackoverflow

于是我找到了stackoverflow,在上面把msyql in count 這些關(guān)鍵詞搜了一下,沒(méi)有找到相關(guān)的問(wèn)題。

然后我把問(wèn)題詳細(xì)描述了一下,提了一個(gè)新的問(wèn)題,沒(méi)想到啊,半個(gè)小時(shí)不到,人家就直接給我點(diǎn)踩,并給出了相似的已解答問(wèn)題。

尷尬了。我超喜歡stackoverflow,這里的人個(gè)個(gè)都是人才。

相似的問(wèn)題在這里。

stackoverflow.com/questions/7…

這位仁兄也在in的使用中也有很多問(wèn)號(hào),in的條件卡在14000左右,超過(guò)就失去了range索引。

下面高贊答案提到了一個(gè)參數(shù),range_optimizer_max_mem_size ,一看就很有搞頭啊。

圖片圖片

轉(zhuǎn)到mysql官網(wǎng),憑我的渣渣英語(yǔ)也能看明白,我知道,大概我找到答案了。

dev.mysql.com/doc/refman/…

企業(yè)微信截圖企業(yè)微信截圖

要控制范圍優(yōu)化器可用的內(nèi)存,使用range_optimizer_max_mem_size系統(tǒng)變量:

  • 值為0表示“沒(méi)有限制”。
  • 當(dāng)值大于0時(shí),優(yōu)化器將跟蹤在考慮范圍訪問(wèn)方法時(shí)所消耗的內(nèi)存。如果即將超過(guò)指定的限制,則放棄范圍訪問(wèn)方法,轉(zhuǎn)而考慮其他方法,包括全表掃描。這可能不太理想。如果發(fā)生這種情況,會(huì)出現(xiàn)以下警告(其中N是當(dāng)前的range_optimizer_max_mem_size值)。

現(xiàn)在事情就很簡(jiǎn)單了。

圖片圖片

range_optimizer_max_mem_size默認(rèn)是8M,使用同樣的SQL,in后面同樣的條件為固定的19900個(gè),在range_optimizer_max_mem_size=8M,range_optimizer_max_mem_size=8情況下分別執(zhí)行一下看效果。

range_optimizer_max_mem_size=8M時(shí),走range索引。

圖片圖片

range_optimizer_max_mem_size=8時(shí),走ALL全表掃描。

圖片圖片

破案了!

明明官網(wǎng)上就有答案,我卻三過(guò)家門(mén)而不入。

結(jié)論

in兩種情況會(huì)走全表掃描。

  • in后面條件導(dǎo)致sql(消耗內(nèi)存)大小超過(guò)range_optimizer_max_mem_size。 
  • in后面條件個(gè)數(shù)接近或者等于表數(shù)量,執(zhí)行引擎認(rèn)為此時(shí)全表掃描更加合適。

推而廣之,or也是一樣的道理。其它> >= < <= BETWEEN AND應(yīng)該也是同樣的道理。因?yàn)樗鼈儦w根結(jié)底都是范圍查詢。

  • or 的情況

圖片圖片

圖片圖片

圖片圖片

  • > <的情況

圖片圖片

圖片圖片

當(dāng)然,總體來(lái)說(shuō),in后面條件越少越好,假設(shè)一張表有1000萬(wàn)條數(shù)據(jù),in后面的條件有10000個(gè),這時(shí)候就算走了range索引,估計(jì)效率也好不到哪里。

責(zé)任編輯:武曉燕 來(lái)源: Shepherd進(jìn)階筆記
相關(guān)推薦

2020-08-26 08:18:39

數(shù)據(jù)索引查詢

2018-10-22 08:14:04

2013-05-16 13:57:31

SNMP網(wǎng)絡(luò)運(yùn)維管理

2012-03-13 09:59:50

小米科技雷軍

2022-12-20 07:39:46

2023-12-21 17:11:21

Containerd管理工具命令行

2011-08-08 09:35:30

云計(jì)算

2012-02-16 08:32:36

思科

2011-10-20 09:27:04

2017-03-16 15:28:20

人工智能視覺(jué)識(shí)別

2020-02-17 21:52:19

微信支付寶健康碼

2018-12-05 08:22:05

IPv6IPv4網(wǎng)絡(luò)

2023-12-15 09:45:21

阻塞接口

2019-11-14 16:23:07

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

2021-03-25 11:15:27

數(shù)字化轉(zhuǎn)型IT技術(shù)

2010-04-28 16:26:31

程序員

2021-02-22 09:05:59

Linux字符設(shè)備架構(gòu)

2021-06-04 09:35:05

Linux字符設(shè)備架構(gòu)

2020-12-18 11:54:22

Linux系統(tǒng)架構(gòu)

2009-09-14 09:40:48

微軟Linux代碼
點(diǎn)贊
收藏

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

一本一道久久综合狠狠老精东影业| 欧美视频二区欧美影视| 国产午夜亚洲精品不卡| 国产精品免费视频xxxx| 91导航在线观看| 亚洲精品一区二区三区在线| 欧美午夜性色大片在线观看| 一区二区高清视频| 午夜性色福利影院| 精品亚洲成a人在线观看 | 国产91在线播放九色| 99精品在免费线中文字幕网站一区| 欧美午夜电影在线| 强开小嫩苞一区二区三区网站| 亚州视频一区二区三区| 久久国产福利国产秒拍| 7777kkkk成人观看| 永久久久久久久| 欧美日韩一二三四| 亚洲国产精彩中文乱码av| 亚欧美在线观看| 日本不卡免费高清视频在线| 亚洲人精品午夜| 日韩精品一区二区三区色偷偷| 午夜精品小视频| 久久福利资源站| 国产精品成人aaaaa网站| 国产乡下妇女做爰毛片| 夜间精品视频| 日韩在线视频线视频免费网站| 50一60岁老妇女毛片| 国产精一区二区| 欧美午夜免费电影| 亚洲精品高清无码视频| 高清毛片在线观看| 亚洲一区二区三区四区在线观看| 亚洲视频sss| 可以免费看污视频的网站在线| 成人激情动漫在线观看| 亚洲va男人天堂| 天天干天天插天天射| 性欧美暴力猛交另类hd| 性视频1819p久久| 国产一级淫片免费| 韩国av一区| www.日本久久久久com.| 大吊一区二区三区| 欧美电影《轻佻寡妇》| 一区二区三区四区在线观看视频| 蜜桃精品成人影片| 日本欧美高清| 精品亚洲一区二区三区在线播放| 男人网站在线观看| 9l视频自拍蝌蚪9l视频成人| 欧美大片一区二区| 精品人妻一区二区三| 国产成年精品| 日韩一区二区免费在线电影| 国产xxxxhd| 亚州一区二区| 精品成人免费观看| 亚洲第一黄色网址| 亚洲+变态+欧美+另类+精品| 日韩激情视频在线播放| 国产成人精品无码片区在线| 天堂俺去俺来也www久久婷婷 | 91亚洲永久免费精品| 国产精品视频一区二区三区,| 久久精品国产99久久6| 国产伦精品免费视频| 国产一区二区三区中文字幕| 国产一区二区三区四| 91久久国产综合久久蜜月精品| 精品免费囯产一区二区三区| 青椒成人免费视频| 成人性生交大片免费看小说 | 久久免费电影网| 五月天丁香综合久久国产| 日韩精品毛片| 亚洲欧美日韩在线不卡| 日韩av新片网| 日韩一级二级| 日韩欧美的一区| 欧美高清性xxxx| 全球成人免费直播| 久久91亚洲人成电影网站| 日本三级片在线观看| 日韩精品亚洲一区二区三区免费| 91精品在线一区| 日本人妻丰满熟妇久久久久久| 久久九九影视网| 国产精品夜夜夜爽张柏芝| 少女频道在线观看免费播放电视剧| 亚洲成av人综合在线观看| 亚洲成熟丰满熟妇高潮xxxxx| 成人mm视频在线观看| 欧美成人a∨高清免费观看| 三上悠亚影音先锋| 欧美体内she精视频在线观看| 欧美亚洲另类激情另类| 国产女人爽到高潮a毛片| 97久久精品人人做人人爽| 在线视频亚洲自拍| 天堂av在线| 91精品国产色综合久久不卡电影 | 亚洲婷婷影院| 欧美激情xxxx| 国产又大又长又粗| 91在线视频免费观看| 中文精品一区二区三区| 亚洲少妇视频| 日韩欧美一级二级三级久久久| caopeng视频| 国产一区视频在线观看免费| 国产成人精品一区二区在线| 亚洲精品无码专区| 日韩一区有码在线| 成人中文字幕av| 中文字幕一区二区三区日韩精品 | 精品久久久久久综合日本| 欧美r级在线| 91国偷自产一区二区开放时间| 日批免费观看视频| 无码一区二区三区视频| 国产ts一区二区| 天天干,夜夜爽| 一区二区国产盗摄色噜噜| 最近中文字幕一区二区| 亚洲视频分类| 青草青草久热精品视频在线观看| 动漫av一区二区三区| 亚洲人精品午夜| 小明看看成人免费视频| 日本精品三区| 国产成人极品视频| 精品视频二区| 欧美日韩中文字幕| 人妻体内射精一区二区三区| 亚洲性色视频| 国产高清精品一区| 日本在线观看大片免费视频| 欧美一级日韩一级| 欧美爱爱小视频| 国内国产精品久久| 综合久久国产| 国产视频一区二区在线播放| 久久精品成人欧美大片| 国产毛片毛片毛片毛片| 亚洲日本韩国一区| 日本一本在线视频| 黑丝一区二区| 国精产品一区二区| 天堂电影一区| 在线观看成人黄色| 亚洲一级特黄毛片| 亚洲桃色在线一区| 原创真实夫妻啪啪av| 欧美三级免费| 久久99国产精品99久久| 天堂av在线网| 神马国产精品影院av| 国产喷水福利在线视频| 亚洲综合偷拍欧美一区色| 天天躁日日躁狠狠躁av麻豆男男| 亚洲色诱最新| 日韩中文字幕一区| 亚洲综合视频| 亚洲 日韩 国产第一| 国产资源在线看| 欧美日本国产视频| 久久99久久98精品免观看软件 | 国模精品娜娜一二三区| 日韩电影免费观| 日韩中文字在线| 亚洲国产精品欧美久久| 欧美日韩国产在线看| 精品成人无码一区二区三区| 狠狠色伊人亚洲综合成人| 老子影院午夜伦不卡大全| 亚洲免费成人av在线| 国产精品一区av| 色爱综合区网| 国产亚洲精品久久久久久777| 亚洲手机在线观看| 亚洲图片欧美一区| 最新中文字幕av| 丁香婷婷综合网| 国产视频在线视频| 欧美久久一级| 日韩欧美一区二区三区四区| 日韩精品免费视频一区二区三区 | 丝袜亚洲另类欧美重口| www.xxxx国产| 在线精品视频免费观看| 黄视频网站免费看| 91老司机福利 在线| 又色又爽又黄视频| 翔田千里一区二区| 波多野结衣 作品| 欧美手机在线| 久久精品美女| 日韩精品视频在线看| 国产福利小视频在线| 成人小视频在线看| 亚洲免费成人av在线| 国产综合久久久久久| av资源在线| 久久九九精品99国产精品| 日漫免费在线观看网站| 91精品国产欧美日韩| 日本黄色一级视频| 亚洲超碰97人人做人人爱| jizzjizzjizz国产| 26uuuu精品一区二区| 欧美久久久久久久久久久| 美女脱光内衣内裤视频久久影院| 免费看国产曰批40分钟| 午夜片欧美伦| 亚洲欧洲中文| 欧美**字幕| 久久国产精品高清| 无码国模国产在线观看| 成人午夜小视频| 草民电影神马电影一区二区| 青青在线视频一区二区三区| 17videosex性欧美| 久久91亚洲精品中文字幕| 久操视频在线观看| 色噜噜狠狠狠综合曰曰曰88av| 理论视频在线| 亚洲深夜福利在线| 免费在线视频你懂得| 日韩av在线电影网| 五月天福利视频| 亚洲电影在线观看| 亚洲精品久久久蜜桃动漫| 日韩精品专区在线影院重磅| 国产手机av在线| 制服丝袜亚洲精品中文字幕| 怡红院成永久免费人全部视频| 91久久香蕉国产日韩欧美9色| 亚洲精品1区2区3区| 午夜不卡av免费| 国产欧美日韩另类| 天天免费综合色| 91国产丝袜播放在线| 午夜精品成人在线| 国产精品一区二区6| 欧美日韩一区二区三区在线免费观看| 黄色片视频网站| 一本到高清视频免费精品| 三级网站在线播放| 欧美在线你懂的| 亚洲在线精品视频| 91精品国产品国语在线不卡| 超碰在线播放97| 精品精品欲导航| 天天操天天操天天| 亚洲三级av在线| 色的视频在线免费看| 久久电影一区二区| 黄页在线观看免费| 欧美最猛性xxxxx(亚洲精品)| 欧美中文字幕精在线不卡| 国产精品久久久久秋霞鲁丝| 日日夜夜亚洲| 超碰97人人在线| 一本色道久久综合亚洲精品酒店| 日韩精品久久久| 国产精品福利在线观看播放| 激情五月六月婷婷| 国产欧美精品| 99视频精品免费| 国产一区二区三区免费| 麻豆av免费看| 久久嫩草精品久久久精品一| 久久视频一区二区三区| 亚洲美女区一区| 久久久久久91亚洲精品中文字幕| 欧美中文字幕不卡| 俄罗斯嫩小性bbwbbw| 亚洲欧美日韩国产成人| 国产淫片在线观看| 51精品在线观看| 日本成人在线网站| 国产另类自拍| 欧美3p视频| 男女视频网站在线观看| 久久国产精品一区二区| 欧美日韩人妻精品一区在线| 中文字幕乱码日本亚洲一区二区| 国产一级大片在线观看| 欧洲在线/亚洲| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 九九九九九九九九| 91年精品国产| 一区二区三区四区五区| 欧美性猛交xxxx乱大交| a天堂视频在线| 国产亚洲精品久久久久久| jizz一区二区三区| 91精品久久久久久综合乱菊| 天天躁日日躁狠狠躁欧美巨大小说| 宅男av一区二区三区| 久久国产一二区| www.555国产精品免费| 亚洲欧美综合网| jizz国产在线观看| 亚洲激情在线观看| 国产传媒在线播放| 国产精品男人的天堂| 首页亚洲中字| bt天堂新版中文在线地址| 美女视频一区在线观看| 国产精品成人一区二区三区电影毛片| 亚洲精品成人天堂一二三| 中文字幕乱码中文字幕| 精品一区二区三区四区在线| 成人女同在线观看| 亚洲已满18点击进入在线看片| 久久精品国产68国产精品亚洲| www黄色av| 91视频一区二区三区| www.av视频在线观看| 日韩一级黄色片| 国产在线更新| 成人h视频在线观看播放| 精品少妇av| 成人中文字幕av| 国产视频一区二区在线| 综合网在线观看| 精品无人国产偷自产在线| 看黄在线观看| 精品毛片久久久久久| 极品av少妇一区二区| 亚洲精品成人无码毛片| 一区二区三区在线免费视频| 国产色在线视频| 久久成人综合视频| 久久精品免视看国产成人| 国产三级中文字幕| 国产美女精品人人做人人爽| 性生交大片免费全黄| 欧美丰满少妇xxxxx高潮对白| 日韩精品毛片| 91成人理论电影| 红桃视频国产一区| 挪威xxxx性hd极品| 婷婷一区二区三区| 久久精品国产亚洲a∨麻豆| 国产精品99久久久久久人| 精品国产乱码久久久久久果冻传媒| 免费国产成人av| 国产精品美女久久久久aⅴ| 99久久久久成人国产免费| 欧美高清视频免费观看| 日本中文字幕在线一区| 国产女女做受ⅹxx高潮| 中文字幕精品在线不卡| 国产一区二区小视频| 久久91精品国产91久久久| 国产毛片久久久| 亚洲成熟丰满熟妇高潮xxxxx| 国产精品久久久久久久裸模| 国产精品久久久久久久久久久久久久久久 | 国产成+人+综合+亚洲欧洲| 日韩aaaa| 在线成人精品视频| 欧美日韩一区二区免费视频| 91网页在线观看| 99视频在线| 久久国产毛片| 美女的奶胸大爽爽大片| 亚洲电影免费观看高清完整版在线| 欧美大片高清| 日本三级福利片| 99精品桃花视频在线观看| 中文字幕在线日本| 欧美成人午夜影院| 午夜先锋成人动漫在线| 国产福利在线免费| 亚洲一区二区三区三| 国产精品影院在线| 99精品国产一区二区| 久久精品动漫| 国产va在线播放| 亚洲天堂av网| 2020最新国产精品| 特级丰满少妇一级| 亚洲v日本v欧美v久久精品| а天堂8中文最新版在线官网| av色综合网| 热久久久久久久| 国产一级免费av| 深夜福利一区二区| 亚洲动漫精品| 国产艳妇疯狂做爰视频 | 中文字幕第38页| 午夜精品一区二区三区三上悠亚| 秋霞影院午夜丰满少妇在线视频|