《Mysql實(shí)例Mysql性能優(yōu)化案例 - 覆蓋索引分享》要點(diǎn):
本文介紹了Mysql實(shí)例Mysql性能優(yōu)化案例 - 覆蓋索引分享,希望對您有用。如果有疑問,可以聯(lián)系我們。
MYSQL必讀場景
MYSQL必讀產(chǎn)物中有一張圖片表,數(shù)據(jù)量將近100萬條,有一條相關(guān)的查詢語句,由于執(zhí)行頻次較高,想針對此語句進(jìn)行優(yōu)化
MYSQL必讀表布局很簡單,主要字段:
MYSQL必讀一個(gè)用戶會(huì)有多條圖片記錄
MYSQL必讀現(xiàn)在有一個(gè)根據(jù)user_id建立的索引:uid
MYSQL必讀查詢語句也很簡單:取得某用戶的圖片集合
MYSQL必讀優(yōu)化前
MYSQL必讀執(zhí)行查詢語句(為了查看真實(shí)執(zhí)行時(shí)間,強(qiáng)制不使用緩存)
MYSQL必讀執(zhí)行了10次,平均耗時(shí)在40ms左右
MYSQL必讀使用explain進(jìn)行闡發(fā)
MYSQL必讀
MYSQL必讀使用了user_id的索引,并且是const常數(shù)查找,表現(xiàn)性能已經(jīng)很好了
MYSQL必讀優(yōu)化后
MYSQL必讀因?yàn)檫@個(gè)語句太簡單,sql自己沒有什么優(yōu)化空間,就考慮了索引
MYSQL必讀修改索引布局,建立一個(gè)(user_id,picname,smallimg)的聯(lián)合索引:uid_pic
MYSQL必讀重新執(zhí)行10次,平均耗時(shí)降到了30ms左右
MYSQL必讀使用explain進(jìn)行闡發(fā)
MYSQL必讀
MYSQL必讀看到使用的索引釀成了剛剛建立的聯(lián)合索引,并且Extra部分顯示使用了'Using Index'
MYSQL必讀總結(jié)
MYSQL必讀'Using Index'的意思是“籠罩索引”,它是使上面sql性能提升的關(guān)鍵
MYSQL必讀一個(gè)包括查詢所需字段的索引稱為“覆蓋索引”
MYSQL必讀MySQL只必要通過索引就可以返回查詢所必要的數(shù)據(jù),而不必在查到索引之后進(jìn)行回表操作,減少IO,提高了效率
MYSQL必讀例如上面的sql,查詢條件是user_id,可以使用聯(lián)合索引,要查詢的字段是picname smallimg,這兩個(gè)字段也在聯(lián)合索引中,這就實(shí)現(xiàn)了“籠罩索引”,可以根據(jù)這個(gè)聯(lián)合索引一次性完成查詢工作,所以提升了性能
維易PHP培訓(xùn)學(xué)院每天發(fā)布《Mysql實(shí)例Mysql性能優(yōu)化案例 - 覆蓋索引分享》等實(shí)戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/9528.html