国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

Mysql性能優化案例 - 覆蓋索引分享

2024-07-24 13:08:53
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了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

 

Mysql,性能優化,覆蓋索引

使用了user_id的索引,并且是const常數查找,表示性能已經很好了

優化后

因為這個語句太簡單,sql本身沒有什么優化空間,就考慮了索引

修改索引結構,建立一個(user_id,picname,smallimg)的聯合索引:uid_pic

重新執行10次,平均耗時降到了30ms左右

使用explain進行分析

Mysql,性能優化,覆蓋索引

看到使用的索引變成了剛剛建立的聯合索引,并且Extra部分顯示使用了'Using Index'

總結

'Using Index'的意思是“覆蓋索引”,它是使上面sql性能提升的關鍵

一個包含查詢所需字段的索引稱為“覆蓋索引”

MySQL只需要通過索引就可以返回查詢所需要的數據,而不必在查到索引之后進行回表操作,減少IO,提高了效率

例如上面的sql,查詢條件是user_id,可以使用聯合索引,要查詢的字段是picname smallimg,這兩個字段也在聯合索引中,這就實現了“覆蓋索引”,可以根據這個聯合索引一次性完成查詢工作,所以提升了性能



注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石城县| 建德市| 马关县| 肇庆市| 垫江县| 灵石县| 酉阳| 德阳市| 四子王旗| 永德县| 稷山县| 五河县| 婺源县| 双江| 房产| 洛扎县| 龙陵县| 南川市| 镇雄县| 绩溪县| 阿勒泰市| 洱源县| 当涂县| 靖边县| 乐陵市| 怀安县| 始兴县| 东阿县| 双峰县| 蒲城县| 西乡县| 横山县| 达州市| 泽州县| 邢台县| 巴彦淖尔市| 朔州市| 玉山县| 贵州省| 灯塔市| 茌平县|