成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

互聯(lián)網(wǎng)大廠面試:在MySQL中使用!=還能走索引嗎?

數(shù)據(jù)庫(kù) MySQL
MySQL中有一個(gè)叫做優(yōu)化器的東西,他會(huì)對(duì)每一條查詢sql做成本分析,然后根據(jù)分析結(jié)果選擇是否使用索引或者全表掃描。

一般情況下,我們會(huì)在一個(gè)索引上較多的使用等值查詢或者范圍查詢,此時(shí)索引大多可以幫助我們極快的查詢出我們需要的數(shù)據(jù)。

那當(dāng)我們?cè)趙here條件中對(duì)索引列使用!=查詢,索引還能發(fā)揮他的作用嗎?

以此SQL為例:

select * from t where k != 6;

MySQL會(huì)如何執(zhí)行這個(gè)SQL呢?是直接全表掃描嗎?

其實(shí),走不走索引,只取決于一個(gè)因素,那就是成本。

我們知道,MySQL中有一個(gè)叫做優(yōu)化器的東西,他會(huì)對(duì)每一條查詢sql做成本分析,然后根據(jù)分析結(jié)果選擇是否使用索引或者全表掃描。

對(duì)于上面的sql,優(yōu)化器會(huì)將k!=6轉(zhuǎn)化為兩個(gè)區(qū)間查詢(-∞,6)和(6,+∞),然后對(duì)索引樹進(jìn)行成本計(jì)算。

我們畫一個(gè)簡(jiǎn)略版的二級(jí)索引樹。

簡(jiǎn)單解釋一下:每個(gè)顏色代表一個(gè)數(shù)據(jù)頁(yè)(MySQL與磁盤交互是以頁(yè)為單位,默認(rèn)一個(gè)頁(yè)是16kb,這里我們假設(shè)一個(gè)頁(yè)存兩條數(shù)據(jù),并且MySQL規(guī)定頁(yè)中的數(shù)據(jù)會(huì)有序排放并組成一個(gè)單向鏈表)。

對(duì)于一個(gè)普通的二級(jí)索引,葉子節(jié)點(diǎn)存儲(chǔ)是索引列和主鍵值,非葉子節(jié)點(diǎn)頁(yè)存儲(chǔ)是下方葉子節(jié)點(diǎn)的最小值和對(duì)應(yīng)的頁(yè)地址。(葉子節(jié)點(diǎn)是有序的,對(duì)應(yīng)的主鍵可不一定)

那么對(duì)于兩個(gè)區(qū)間查詢(-∞,6)和(6,+∞)意味著什么呢?

如果一個(gè)二級(jí)索引樹的數(shù)據(jù)簡(jiǎn)化為12條數(shù)據(jù),那么就有1-5,7-12共計(jì)11條數(shù)據(jù)要被掃描,然后進(jìn)行11次回表。

也就是說,如果表中有120萬(wàn)條數(shù)據(jù),要回表110萬(wàn)次。

emm,MySQL一看這么麻煩,還掃描什么二級(jí)索引樹啊,直接全表掃描走起吧。

那難道說,對(duì)于!=查詢就用不了索引了嗎?

非也。

如果數(shù)據(jù)集是下面這種,情況可能就不一樣了。

在這個(gè)索引樹上,索引值為6的占據(jù)了很大一部分,那么MySQL掃描成本就會(huì)大大降低了。

此時(shí)掃描的行數(shù)變成了1,10-12,共計(jì)3行。

相對(duì)于全表掃描,此時(shí)走二級(jí)索引樹掃描,顯然代價(jià)是比較低的。

也就是說,對(duì)于!=是否可以使用索引,要看具體的場(chǎng)景。

總結(jié)一下就是,MySQL判斷某個(gè)sql是否走索引,其實(shí)取決于成本分析。

如果使用二級(jí)索引的成本更低,MySQL就會(huì)傾向于使用二級(jí)索引。

如果使用二級(jí)索引掃描的行數(shù)占比過高,導(dǎo)致需要頻繁的回表,MySQL經(jīng)過計(jì)算之后覺得走二級(jí)索引的代價(jià)太大了,就會(huì)使用全表掃描。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2019-10-25 15:50:06

MySQL數(shù)據(jù)庫(kù)命令

2021-12-16 10:32:04

APP會(huì)員互聯(lián)網(wǎng)大廠用戶

2022-01-05 16:45:22

互聯(lián)網(wǎng)裁員危機(jī)

2022-08-31 16:17:21

造芯互聯(lián)網(wǎng)公司大廠

2023-01-17 09:41:26

Redis接口限流

2020-02-23 17:39:21

互聯(lián)網(wǎng)復(fù)工公司

2021-12-14 15:27:48

互聯(lián)網(wǎng)程序員裁員

2022-06-01 20:24:25

互聯(lián)網(wǎng)元宇宙大廠

2011-09-05 13:59:15

中國(guó)網(wǎng)民互聯(lián)網(wǎng)

2023-05-02 22:38:46

JVMJVM調(diào)優(yōu)

2022-02-24 11:05:06

互聯(lián)網(wǎng)加班科技

2023-02-07 09:01:30

字符串類型MySQL

2018-08-23 09:06:18

互聯(lián)網(wǎng)百度面試

2020-07-19 10:06:02

互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)

2021-11-22 10:03:47

互聯(lián)網(wǎng)薪資技術(shù)

2022-01-24 10:46:40

互聯(lián)網(wǎng)裁員

2021-06-28 08:57:29

快手騰訊員工

2023-12-11 14:20:00

系統(tǒng)緩存本地緩存

2016-11-18 11:25:33

2019-12-09 16:09:00

互聯(lián)網(wǎng)
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 亚洲一区亚洲二区 | 欧美一级欧美三级在线观看 | 5060网一级毛片 | 欧美视频二区 | www.中文字幕av | 午夜免费在线观看 | 午夜精品一区二区三区在线视频 | 国产在线一区二区三区 | 91精品国产99久久 | 久久久久久久久久久爱 | 一区二区三区高清 | 国产日韩精品视频 | 欧美视频成人 | 国产精品a一区二区三区网址 | 激情福利视频 | 国产一级在线视频 | 日本一区二区高清不卡 | 99精品欧美一区二区三区综合在线 | 91精品国产综合久久婷婷香蕉 | 亚洲 成人 在线 | 欧美亚洲视频在线观看 | 久久精品中文字幕 | 欧美日韩亚 | 天天爽天天操 | 国产精品久久久久久久午夜片 | 亚洲精品乱码久久久久久久久久 | 99在线免费观看 | 四虎影院在线观看av | 欧美一区二区三区日韩 | 久久黄色精品视频 | 国产91丝袜在线熟 | 美女黄网站 | 国产精品欧美一区二区三区 | 久热中文字幕 | www.99热.com| 国产成人99久久亚洲综合精品 | 天天干在线播放 | 亚洲精品精品 | 欧美一区| 粉嫩一区二区三区性色av | 亚洲精彩视频在线观看 |