真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

為什么MySQL偶爾會(huì)選錯(cuò)索引

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)為什么MySQL偶爾會(huì)選錯(cuò)索引,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都創(chuàng)新互聯(lián)公司 - 西部信息機(jī)房,四川服務(wù)器租用,成都服務(wù)器租用,四川網(wǎng)通托管,綿陽服務(wù)器托管,德陽服務(wù)器托管,遂寧服務(wù)器托管,綿陽服務(wù)器托管,四川云主機(jī),成都云主機(jī),西南云主機(jī),西部信息機(jī)房,西南服務(wù)器托管,四川/成都大帶寬,服務(wù)器機(jī)柜,四川老牌IDC服務(wù)商

在此之前,我做過不少ToC的項(xiàng)目,在ToC的應(yīng)用場(chǎng)景中,業(yè)務(wù)一般都是比較簡(jiǎn)單,基本上沒有多少復(fù)雜的查詢(基本上,只要建立用戶ID為索引,就能夠大大提升查詢效率了。)這兩年,也逐漸接觸到一些ToB的業(yè)務(wù),發(fā)現(xiàn)ToB的業(yè)務(wù),真的是比ToC的要復(fù)雜一些。舉個(gè)簡(jiǎn)單的例子,ToB應(yīng)用中,最痛苦的事情就是組織架構(gòu),原本查詢一個(gè)人的數(shù)據(jù),可能變成查詢一個(gè)小組,一個(gè)部門,甚至是一個(gè)分公司的數(shù)據(jù)。

不僅如此,由于不同職級(jí)的員工的查詢權(quán)限可能不一樣。查詢條件比ToC場(chǎng)景中復(fù)雜得多,所以有時(shí)候一張表,會(huì)建立好多個(gè)不同的索引。后時(shí)候我們就會(huì)發(fā)現(xiàn),怎么查詢莫名其妙就變得很慢了。按道理說,如果命中了我們想要的索引,應(yīng)該很快才對(duì)。

于是,我們就對(duì)Sql語句進(jìn)行分析,發(fā)現(xiàn)Mysql使用的是另外一個(gè)索引,但是在這個(gè)業(yè)務(wù)下,使用另外一個(gè)索引會(huì)得到更好的結(jié)果,為什么Mysql會(huì)選錯(cuò)索引呢?很顯然,存儲(chǔ)很難會(huì)去理解業(yè)務(wù)的實(shí)際情況,Mysql也需要一定的算法才能評(píng)估出索引的優(yōu)劣,Mysql是這樣進(jìn)行評(píng)分的。

Mysql對(duì)索引的評(píng)分的首要原則,就是索引的差異度最大,舉個(gè)例子,假如是一個(gè)小學(xué)生信息查詢系統(tǒng),我們以出生日期建立索引,那么大概就有365*7個(gè)不同的值,假如我們以學(xué)生的性別作為索引,那么基本上就只有2個(gè)不同的值了,假如一個(gè)查詢條件同時(shí)包含出生日期跟性別,那么Mysql必然優(yōu)先選基數(shù)更大的作為索引,也就是出生日期作為索引。

那但是,Mysql實(shí)際上并不理解什么是出生日期,什么是性別,他們是判斷哪一個(gè)基數(shù)更大的呢?非常簡(jiǎn)單,把索引掃一遍不就知道結(jié)果了么?我們只要在索引樹上掃一遍,就能夠知道不同的Key有多少個(gè)。但是,假如我們的數(shù)據(jù)越來越多,每次都把所有的索引樹都掃描一遍并不現(xiàn)實(shí)?;诖蠖鄶?shù)的互聯(lián)網(wǎng)應(yīng)用都是讀多寫少的,Mysql會(huì)把索引的評(píng)分記錄一段時(shí)間,但是,每次觸發(fā)重新評(píng)估的時(shí)候,仍要花費(fèi)不少的時(shí)間。

Mysql采用抽樣調(diào)查的方式,隨機(jī)從各個(gè)索引樹上面取一定的頁數(shù),通過統(tǒng)計(jì)這些頁數(shù)對(duì)索引進(jìn)行評(píng)估。現(xiàn)在回到我們現(xiàn)實(shí)的開發(fā)中,不知道你有沒有遇到過這樣的問題,一些異常狀態(tài)占總數(shù)量非常少,例如退貨退款的訂單只占總訂單的少數(shù),但是你使用Mysql查詢的時(shí)候卻很命中這個(gè)索引。就是因?yàn)樵贛ysql評(píng)估分?jǐn)?shù)的時(shí)候,大多數(shù)時(shí)候都會(huì)覺得這個(gè)索引上面不同數(shù)據(jù)量很少,所以打了低分。

上述就是小編為大家分享的為什么MySQL偶爾會(huì)選錯(cuò)索引了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁名稱:為什么MySQL偶爾會(huì)選錯(cuò)索引
鏈接URL:http://weahome.cn/article/pcogds.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部