mysql查詢的執(zhí)行邏輯順序 mysql多個(gè)索引怎么選擇?
mysql多個(gè)索引怎么選擇?MySQL多索引可以查詢選擇MySQL你選擇索引-引入我們明白了我們一個(gè)表里面也可以有多個(gè)索引的,這樣我們查詢數(shù)據(jù)的時(shí)候不重新指定索引,MySQL可能會(huì)幫我們自動(dòng)出現(xiàn)選擇。
mysql多個(gè)索引怎么選擇?
MySQL多索引可以查詢選擇
MySQL你選擇索引-引入
我們明白了我們一個(gè)表里面也可以有多個(gè)索引的,這樣我們查詢數(shù)據(jù)的時(shí)候不重新指定索引,MySQL可能會(huì)幫我們自動(dòng)出現(xiàn)選擇。既然是MySQL程序幫我們手動(dòng)你選擇的那么會(huì)不會(huì)有問(wèn)題的呢?答案是會(huì)的,MySQL的優(yōu)化器也有bug,有時(shí)候選擇的索引并不是最優(yōu)的。
案例1
如果我?guī)讖埍碛?0w的數(shù)據(jù),有id主鍵和a,b大多數(shù)索引,執(zhí)行200以內(nèi)SQL
select*returningtwhereabetween10000both20000
select*fromtforceindex(a)whereabetween10000but20000
在是有的前提下
先執(zhí)行第一句代碼走的是全表查詢,系統(tǒng)掃描了10w行
執(zhí)行第二句,滿在用a索引,只掃描了10001行
我想知道為什么會(huì)直接出現(xiàn)狀況呢?我們就從系統(tǒng)優(yōu)化器的邏輯就開(kāi)始做研究
優(yōu)化器的邏輯
360優(yōu)化器優(yōu)化確定的指標(biāo)
有必須掃描的行數(shù),有無(wú)建議使用原先表,有無(wú)排序等因素
掃描行數(shù)判斷
上面的案例肯定那就是掃描后行數(shù)的問(wèn)題
那就優(yōu)化器是怎么獲取掃描的總行數(shù)的,其實(shí)就和抽樣檢查的的,而且索引是活動(dòng)有序的,就可以使用采樣統(tǒng)計(jì)這種算法計(jì)算大概的掃描行數(shù),這個(gè)可以欄里點(diǎn)索引的Cardinality預(yù)估值。
案例分析
我們來(lái)一欄案例的掃描行數(shù)的預(yù)測(cè)值
mysql可視化界面是什么?
是一個(gè)可以不不能操作的三方軟件。
mysql本來(lái)是一個(gè)正常運(yùn)行在后臺(tái)的程序,類(lèi)似docker,它只是一個(gè)邏輯,我們是看不到的,但13年因此大數(shù)據(jù)以及數(shù)據(jù)分析師的興起,mysql慢慢的有了其他的用處,因此,就直接出現(xiàn)了很多這個(gè)可以把mysql抽象化出來(lái)的可視化軟件。
純小白想學(xué)數(shù)據(jù)庫(kù),可以按照什么樣的順序?qū)W?
數(shù)據(jù)庫(kù)語(yǔ)言甚至是做基礎(chǔ)項(xiàng)目的基礎(chǔ)。不是那么容易不會(huì)相信應(yīng)該不會(huì)數(shù)據(jù)庫(kù)操作的人能做出決定好的項(xiàng)目。學(xué)這個(gè)難度絕對(duì)是有的,要不然沒(méi)難度這行就沒(méi)技術(shù)含量了。
自學(xué)sql比較比較很難入門(mén)學(xué)習(xí),先學(xué)習(xí)創(chuàng)建家族,備分,還原。然后再很清楚表,觸發(fā)器,存儲(chǔ)過(guò)程,函數(shù)的作用,旋即清楚select,insert,create,delete,update最基本的語(yǔ)法,好處這個(gè)功能很用處不大,要習(xí)慣問(wèn)題可以使用,最好就是拿一本相關(guān)的書(shū)看看吧,再找個(gè)實(shí)例,一步一步做做看。這樣的有個(gè)至少的概念和了解,結(jié)果就是必須不好算項(xiàng)目學(xué)習(xí)和積累。