錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務,錦州廣廈維修電腦,公司IT外包服務
topFlag1 設為首頁
topFlag3 收藏本站
 
maojin003 首 頁 公司介紹 服務項目 服務報價 維修流程 IT外包服務 服務器維護 技術文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務技術文章
怎么判斷MySQL中sql語句索引是否生效

作者: 佚名  日期:2023-07-14 09:10:33   來源: 本站整理

創建表

1、建表語句如下所示:

DROP TABLE IF EXISTS `p_user`;

CREATE TABLE `p_user` (

  `id` int(11) NOT NULL auto_increment,

  `name` varchar(10) default NULL,

  `sex` char(2) default NULL,

  PRIMARY KEY  (`id`)

);

INSERT INTO `p_user` VALUES (‘1’, ‘A’, ‘男’);

INSERT INTO `p_user` VALUES (‘2’, ‘B’, ‘女’);

INSERT INTO `p_user` VALUES (‘3’, ‘C’, ‘男’);

怎么判斷MySQL中sql語句索引是否生效

然后給name字段創建Unique索引,請自行百度。

explain函數驗證索引是否有效

第一步:使用列表name查詢驗證索引。

1、使用索引列時索引才會生效,語句如下:

explain select * from p_user WHERE name=’B’

怎么判斷MySQL中sql語句索引是否生效

2、不使用索引查詢:

explain select * from p_user 

怎么判斷MySQL中sql語句索引是否生效

第二步:失效的索引。

1、使用語句:

explain select * from p_user WHERE name != ‘A’

怎么判斷MySQL中sql語句索引是否生效

 

第三步:復合場景。

1、使用語句:

explain select * from p_user WHERE name=’B’ AND name != ‘A’

怎么判斷MySQL中sql語句索引是否生效

 

 怎么判斷MySQL中sql語句索引是否生效

explain函數介紹

explain顯示了MySQL如何使用索引來處理select語句以及連接表。他可以幫助選擇更好的索引和寫出更優化的查詢語句

explain顯示了很多列,各個關鍵字的含義如下:

  1. table:顧名思義,顯示這一行的數據是關于哪張表的;
  2. type:這是重要的列,顯示連接使用了何種類型。從最好到最差的連接類型為:const、eq_reg、ref、range、indexhe和ALL;
  3. possible_keys:顯示可能應用在這張表中的索引。如果為空,沒有可能的索引。可以為相關的域從where語句中選擇一個合適的語句;
  4. key: 實際使用的索引。如果為NULL,則沒有使用索引。很少的情況下,MySQL會選擇優化不足的索引。這種情況下,可以在Select語句中使用USE INDEX(indexname)來強制使用一個索引或者用IGNORE INDEX(indexname)來強制MySQL忽略索引; 
  5. key_len:使用的索引的長度。在不損失精確性的情況下,長度越短越好;
  6. ref:顯示索引的哪一列被使用了,如果可能的話,是一個常數;
  7. rows:MySQL認為必須檢查的用來返回請求數據的行數;
  8. Extra:關于MySQL如何解析查詢的額外信息。
  9. 具體的各個列所能表示的值以及含義可以參考MySQL官方文檔介紹,地址:https://dev.mysql.com/doc/refman/5.7/en/explain-output.html

造成索引失效的場景

  1. where 子句中使用 != 或 <> 操作符,引擎將放棄使用索引而進行全表掃描。
  2. where 子句中使用 or 來連接條件,將導致引擎放棄使用索引而進行全表掃描,即使其中有條件帶索引也不會使用,這也是為什么盡量少用 or 的原因。
  3. 對于多列索引,不是使用的一部分,則不會使用索引。
  4. 如果列類型是字符串,那一定要在條件中將數據使用引號引用起來,否則不會使用索引。
  5. like的模糊查詢以 % 開頭,索引失效。
  6. 在 where 子句中對字段進行表達式操作,導致引擎放棄使用索引而進行全表掃描。
  7. 在 where 子句中對字段進行函數操作,導致引擎放棄使用索引而進行全表掃描。
  8. 在 where 子句中的 “=” 左邊進行函數、算術運算或其他表達式運算,導致系統將可能無法正確使用索引。
  9. 不適合鍵值較少的列(重復數據較多的列)。假如索引列TYPE有5個鍵值,如果有1萬條數據,那么 WHERE TYPE = 1將訪問表中的2000個數據塊。再加***問索引塊,一共要訪問大于200個的數據塊。如果全表掃描,假設10條數據一個數據塊,那么只需訪問1000個數據塊,既然全表掃描訪問的數據塊少一些,肯定就不會利用索引了。


熱門文章
  • 條碼打印機設置標簽紙大小?打印機驅...
  • 怎么判斷MySQL中sql語句索引是否生...
  • L1正則化和L2正則化
  • 在Linux系統下,可以使用以下方法和...
  • 主板型號怎么看?小編將給大家介紹...
  • win10在激活界面會提示無法訪問激活...
  • 360日歷怎么卸載?360日歷怎么徹底...
  • 墨魚丸是什么怎么卸載?墨魚丸視頻...
  • Win10打開壓縮文件提示安全警告的解...
  • Linux高頻常用指令匯總
  • 150個CMD命令(史上更全cmd命令 net...
  • 線性回歸算法
  • 錦州廣廈電腦上門維修

    報修電話:13840665804  QQ:174984393 (聯系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號:遼ICP備2023002984號-1
    上門服務區域: 遼寧錦州市區
    主要業務: 修電腦,電腦修理,電腦維護,上門維修電腦,黑屏藍屏死機故障排除,無線上網設置,IT服務外包,局域網組建,ADSL共享上網,路由器設置,數據恢復,密碼破解,光盤刻錄制作等服務

    技術支持:微軟等
    主站蜘蛛池模板: 东京热无码av一区二区| 69久久精品无码一区二区| 亚洲AV无码片一区二区三区| 精品久久久久久无码专区| 2020无码专区人妻系列日韩| 东京热av人妻无码专区| 亚洲中文字幕久久精品无码2021| 无码A级毛片日韩精品| 亚洲ⅴ国产v天堂a无码二区| 无码熟熟妇丰满人妻啪啪软件 | 精品乱码一区内射人妻无码| 亚洲AV无码乱码国产麻豆| 精品无码久久久久久国产| 无码人妻久久久一区二区三区 | 国产精品毛片无码| 亚洲熟妇无码八V在线播放| 亚洲AV永久无码区成人网站| 免费无码午夜福利片| 亚洲精品自偷自拍无码| 人妻无码第一区二区三区| 亚洲VA成无码人在线观看天堂| 国产精品va在线观看无码| 永久免费无码日韩视频| 成人免费无码大片a毛片软件| 久久无码专区国产精品发布| 亚洲成AV人片在线播放无码 | 无码Aⅴ在线观看| 精品国产一区二区三区无码| 无码专区狠狠躁躁天天躁| 亚洲日韩中文无码久久| 永久免费av无码入口国语片| 亚洲色偷拍区另类无码专区| 性色AV一区二区三区无码| 午夜爽喷水无码成人18禁三级 | 国产成人无码专区| 亚洲男人第一无码aⅴ网站| 一道久在线无码加勒比| 小泽玛丽无码视频一区| 成人无码一区二区三区| 亚洲熟妇无码八AV在线播放| 国产精品无码无片在线观看|