程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql機能優化案例 - 籠罩索引分享

Mysql機能優化案例 - 籠罩索引分享

編輯:MySQL綜合教程

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,這兩個字段也在結合索引中,這就完成了“籠罩索引”,可以依據這個結合索引一次性完成查詢任務,所以晉升了機能

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved