400-650-7353
您所在的位置:首頁 > IT干貨資料 > 軟件測試 > 【軟件測試基礎(chǔ)知識】執(zhí)行計劃中索引使用的情況

【軟件測試基礎(chǔ)知識】執(zhí)行計劃中索引使用的情況

  • 發(fā)布: 軟件測試培訓(xùn)
  • 來源:軟件測試干貨資料
  • 2021-05-12 13:56:16
  • 閱讀()
  • 分享
  • 手機端入口

在我的上一篇文章《功能測試也可以發(fā)現(xiàn)數(shù)據(jù)庫相關(guān)的性能問題》中提到,通過SQL語句的執(zhí)行計劃可以斷定一些語句肯定有性能問題,今天再寫一篇文章,介紹一下執(zhí)行計劃中索引使用的情況。

執(zhí)行explain之后結(jié)果集包含如下信息:

possible_keys:指出MySQL能使用哪個索引在表中找到記錄,查詢涉及到的字段上若存在索引,則該索引將被列出,但不一定被查詢使用(該查詢可以利用的索引,如果沒有任何索引顯示NULL)

key:顯示MySQL實際決定使用的鍵(索引),一般會情況會包含在possible_keys中,如果沒有選擇索引,鍵是NULL。

possible_keys和key產(chǎn)生的情況可能有以下幾種:

1)possible_keys有多個值,key得值為possible_keys中的一個。

2)possible_keys有一個值,key的值和possible_keys中的值相同。

3)possible_keys有一個或多個值,但key為NULL。

4)possible_keys為NULL,但key有值。

5)possible_keys和key都為NULL。

下面我們分別來看下各種情況。

1. possible_keys有多個值,key得值為possible_keys中的一個。

這種情況比較常見,因為每條sql最多只能用到一個索引。下面的例子我們在col1字段上創(chuàng)建了一個單獨索引和一個復(fù)合索引,所以possible_keys有兩個,但key只有一個。

2. possible_keys有一個值,key的值和possible_keys中的值相同。在上面的基礎(chǔ)上,我們刪掉任意一個索引。結(jié)果如下:

3. possible_keys有一個或多個值,但key為NULL。下圖中,因為col1為varchar類型,但是查詢的時候沒有加上引號

4. possible_keys為NULL,但key有值。這種一般是引用了覆蓋索引的情況,col1,col2和col3兩列加過聯(lián)合索引,select的字段不是*,而是col1和col2,所以結(jié)果只會出現(xiàn)在key這一列中。

5. possible_keys和key都為NULL,我們直接看下面的例子

文章“【軟件測試基礎(chǔ)知識】執(zhí)行計劃中索引使用的情況”已幫助

>>本文地址:http://hqfphsz.com/zhuanye/2021/68696.html

THE END  

聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。

1 您的年齡

2 您的學(xué)歷

3 您更想做哪個方向的工作?

獲取測試結(jié)果
  • 大前端大前端
  • 大數(shù)據(jù)大數(shù)據(jù)
  • 互聯(lián)網(wǎng)營銷互聯(lián)網(wǎng)營銷
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯(lián)網(wǎng)嵌入式
  • 全域電商運營全域電商運營
  • 軟件測試軟件測試
  • 室內(nèi)設(shè)計室內(nèi)設(shè)計
  • 平面設(shè)計平面設(shè)計
  • 電商設(shè)計電商設(shè)計
  • 網(wǎng)頁設(shè)計網(wǎng)頁設(shè)計
  • 全鏈路UI/UE設(shè)計UI設(shè)計
  • VR/AR游戲開發(fā)VR/AR
  • 網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全
  • 新媒體與短視頻運營新媒體
  • 直播帶貨直播帶貨
  • 智能機器人軟件開發(fā)智能機器人
 

快速通道fast track

近期開班時間TIME