Mysql 查詢優(yōu)化

image.png

如果查詢緩存有命中的查詢結(jié)果,查詢語句就可以直接去查詢緩存中取數(shù)據(jù)肤视。
緩存在第一次查詢后档痪,MySQL便將查詢語句以及查詢結(jié)果進(jìn)行hash處理并保留在緩存中,SQL查詢到達(dá)之后邢滑,對其進(jìn)行同樣的hash處理后腐螟,將兩個(gè)hash值進(jìn)行對照,如果一樣殊鞭,則命中,從緩存中返回查詢結(jié)果尼桶;否則操灿,需要整個(gè)流程走一遍

image.png

發(fā)送SQL語句。
查詢緩存泵督,如果命中緩存直接返回結(jié)果趾盐。
SQL解析,預(yù)處理,再由優(yōu)化器生成對應(yīng)的查詢執(zhí)行計(jì)劃救鲤。 (join過多久窟,index過多都不好,影響速度1静)
執(zhí)行查詢斥扛,調(diào)用存儲(chǔ)引擎API獲取數(shù)據(jù)。?返回結(jié)果丹锹。

show variables like '%query_cache%
show status like '%Qcache%';

索引

image.png

image.png

image.png

image.png

MyISAM的索引文件僅僅保存數(shù)據(jù)記錄的地址稀颁,被稱為非聚集索引

image.png

Innodb 的主鍵索引為聚集索引,葉子節(jié)點(diǎn)包含完整的數(shù)據(jù)楣黍,稱為為聚集索引匾灶。


image.png

每次查找都要經(jīng)過兩次,第一次是通過二級索引找到主鍵租漂, 然后再通過主鍵索引找到數(shù)據(jù)阶女。

更新聚簇索引列的代價(jià)很高,因?yàn)闀?huì)強(qiáng)制InnoDB將每個(gè)被更新的行移動(dòng)到新的位置哩治。

插入速度嚴(yán)重依賴插入順序秃踩。按照主鍵的順序插入式加載數(shù)據(jù)到InnoDB表中速度最快的方式。但如果不是按照主鍵順序加載數(shù)據(jù)锚扎,那么在加載完成后最好使用OPTIMIZE TABLE命令重新組織一下表吞瞪。

結(jié)論:所以如果沒有特別的需要,請永遠(yuǎn)使用一個(gè)與業(yè)務(wù)無關(guān)的自增字段作為主鍵

索引最佳實(shí)踐

不要使用表達(dá)式

索引列不能是表達(dá)式的一部分驾孔,也不能是函數(shù)的參數(shù)芍秆,否則不會(huì)使用索引。
如:SELECT * FROM student WHERE id + 1 = 5

前綴索引和索引選擇性

如果是很長的字符串翠勉,可以只索引前面的部分字符妖啥,前提是保證選擇性。

所謂索引的選擇性(Selectivity)对碌,是指不重復(fù)的索引值(也叫基數(shù)荆虱,Cardinality)與表記錄數(shù)(#T)的比值:
Index Selectivity = Cardinality / #T

比如對一個(gè)url列建立索引。通過選擇性計(jì)算選擇前面幾個(gè)字符建立索引朽们。

多列索引

最左前綴匹配原則

mysql會(huì)一直向右匹配直到遇到范圍查詢(>怀读、<、between骑脱、like)就停止匹配菜枷,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)順序的索引,d是用不到索引的叁丧,如果建立(a,b,d,c)的索引則都可以用到啤誊,a,b,d的順序可以任意調(diào)整

多列索引的順序很重要

將選擇性高的排在第一位岳瞭。

索引覆蓋

建議select只查詢真正需要的列,這樣就能用到索引覆蓋

利用索引排序

索引用于ORDER BY 和 GROUP BY , ORDER BY子句和查找型查詢的限制是一樣的:需要滿足索引的最左前綴的要求

避免不必要的索引

占用空間
插入更新時(shí)操作會(huì)變慢

Profiling

最常用的方法:分析慢查詢?nèi)罩?br> 分析工具:pt-query-digest

分析索引使用:
Explain
Explain extended, show warnings

分析單條語句執(zhí)行時(shí)間:

Set profiling = 1
……
Show profiles
Show profile for query 1

分析單條語句計(jì)數(shù)器:

Flush status
……
SHOW STATUS WHERE Variable_name LIKE 'Handler%' OR Variable_name LIKE 'Created%';

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蚊锹,一起剝皮案震驚了整個(gè)濱河市瞳筏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌牡昆,老刑警劉巖姚炕,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異迁杨,居然都是意外死亡钻心,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進(jìn)店門铅协,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捷沸,“玉大人,你說我怎么就攤上這事狐史⊙鞲” “怎么了?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵骏全,是天一觀的道長苍柏。 經(jīng)常有香客問我,道長姜贡,這世上最難降的妖魔是什么试吁? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮楼咳,結(jié)果婚禮上熄捍,老公的妹妹穿的比我還像新娘。我一直安慰自己母怜,他們只是感情好余耽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著苹熏,像睡著了一般碟贾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上轨域,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天袱耽,我揣著相機(jī)與錄音,去河邊找鬼干发。 笑死朱巨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的铐然。 我是一名探鬼主播蔬崩,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼搀暑!你這毒婦竟也來了沥阳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤自点,失蹤者是張志新(化名)和其女友劉穎桐罕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桂敛,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡功炮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了术唬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薪伏。...
    茶點(diǎn)故事閱讀 40,146評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖粗仓,靈堂內(nèi)的尸體忽然破棺而出嫁怀,到底是詐尸還是另有隱情,我是刑警寧澤借浊,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布塘淑,位于F島的核電站,受9級特大地震影響蚂斤,放射性物質(zhì)發(fā)生泄漏存捺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一曙蒸、第九天 我趴在偏房一處隱蔽的房頂上張望捌治。 院中可真熱鬧,春花似錦逸爵、人聲如沸具滴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽构韵。三九已至,卻和暖如春趋艘,著一層夾襖步出監(jiān)牢的瞬間疲恢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工瓷胧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留显拳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓搓萧,卻偏偏與公主長得像杂数,于是被迫代替她去往敵國和親宛畦。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容