Mysql機能優化案例 - 籠罩索引分享。本站提示廣大學習愛好者:(Mysql機能優化案例 - 籠罩索引分享)文章只能為提供參考,不一定能成為您想要的結果。以下是Mysql機能優化案例 - 籠罩索引分享正文
場景
產物中有一張圖片表,數據量快要100萬條,有一條相干的查詢語句,因為履行頻次較高,想針對此語句停止優化
表構造很簡略,重要字段:
user_id 用戶ID
picname 圖片稱號
smallimg 小圖稱號
一個用戶會有多條圖片記載
如今有一個依據user_id樹立的索引:uid
查詢語句也很簡略:獲得某用戶的圖片聚集
select picname, smallimg
from pics where user_id = xxx;
優化前
履行查詢語句(為了檢查真實履行時光,強迫不應用緩存)
select SQL_NO_CACHE picname, smallimg
from pics where user_id=17853;
履行了10次,均勻耗時在40ms閣下
應用explain停止剖析
explain select SQL_NO_CACHE picname, smallimg
from pics where user_id=17853
應用了user_id的索引,而且是const常數查找,表現機能曾經很好了
優化後
由於這個語句太簡略,sql自己沒有甚麼優化空間,就斟酌了索引
修正索引構造,樹立一個(user_id,picname,smallimg)的結合索引:uid_pic
從新履行10次,均勻耗時降到了30ms閣下
應用explain停止剖析
看到應用的索引釀成了方才樹立的結合索引,而且Extra部門顯示應用了'Using Index'
總結
'Using Index'的意思是“籠罩索引”,它是使下面sql機能晉升的症結
一個包括查詢所需字段的索引稱為“籠罩索引”
MySQL只須要經由過程索引便可以前往查詢所須要的數據,而不用在查到索引以後停止回表操作,削減IO,進步了效力
例如下面的sql,查詢前提是user_id,可使用結合索引,要查詢的字段是picname smallimg,這兩個字段也在結合索引中,這就完成了“籠罩索引”,可以依據這個結合索引一次性完成查詢任務,所以晉升了機能