錦州市廣廈電腦維修|上門維修電腦|上門做系統|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共享上網,路由器設置,數據恢復,密碼破解,光盤刻錄制作等服務

    技術支持:微軟等
    主站蜘蛛池模板: 亚洲大尺度无码专区尤物| 18禁无遮挡无码国产免费网站 | 丝袜无码一区二区三区| 国产亚洲人成无码网在线观看| 无码国产午夜福利片在线观看| 亚洲成a∧人片在线观看无码| 亚洲乱亚洲乱妇无码麻豆| av色欲无码人妻中文字幕 | 无码人妻一区二区三区免费看| MM1313亚洲精品无码久久| 久久久久久国产精品无码超碰 | 亚洲AV人无码激艳猛片| julia无码人妻中文字幕在线| 亚洲av无码一区二区三区在线播放 | 中文字幕AV无码一区二区三区| 中国少妇无码专区| 人妻无码一区二区三区| 无码中文在线二区免费| 中文字幕韩国三级理论无码| 亚洲av无码专区在线| 精品无码国产一区二区三区AV | 久久青青草原亚洲av无码| 蜜臀AV无码精品人妻色欲| 人妻丰满av无码中文字幕| 无码精品一区二区三区免费视频| 2014AV天堂无码一区| 国产日韩精品无码区免费专区国产| 国产精品无码一区二区三区不卡| 色综合久久久无码网中文| 久久久久亚洲Av无码专| 亚洲AV无码一区二区三区牛牛| 亚洲成av人片不卡无码| 999久久久无码国产精品| 中文字幕无码不卡免费视频| 精品国产v无码大片在线观看 | 永久免费无码网站在线观看| 国产精品亚洲一区二区无码| 高清无码一区二区在线观看吞精| 精品韩国亚洲av无码不卡区| 精品亚洲成α人无码成α在线观看 | 国产AV天堂无码一区二区三区|