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