久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql索引失效的原因

143次閱讀
沒有評論

共計 2612 個字符,預計需要花費 7 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

丸趣 TV 小編給大家分享一下 mysql 索引失效的原因,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

索引對于 MySQL 而言,是非常重要的篇章。索引知識點也巨多,要想掌握透徹,需要逐個知識點一一擊破,今天來先來聊聊哪些情況下會導致索引失效。

圖片總結版

mysql 索引失效的原因

相關免費學習推薦:mysql 視頻教程

全值匹配(索引最佳)

explain select * from user where name =  zhangsan  and age = 20 and pos =  cxy  and phone =  18730658760

mysql 索引失效的原因

 和索引順序無關,MySQL 底層的優化器會進行優化,調整索引的順序
explain select * from user where name =  zhangsan  and age = 20 and pos =  cxy  and phone =  18730658760

mysql 索引失效的原因

1、違反最左前綴法則

 如果索引有多列,要遵守最左前綴法則
即查詢從索引的最左前列開始并且不跳過索引中的列
explain select * from user where age = 20 and phone =  18730658760  and pos =  cxy

mysql 索引失效的原因

2、在索引列上做任何操作

 如計算、函數、(自動 or 手動)類型轉換等操作,會導致索引失效從而全表掃描
explain select * from user where left(name,5) =  zhangsan  and age = 20 and phone =  18730658760

mysql 索引失效的原因

3、索引范圍條件右邊的列

 索引范圍條件右邊的索引列會失效
explain select * from user where name =  zhangsan  and age   20 and pos =  cxy

mysql 索引失效的原因

4、盡量使用覆蓋索引

 只訪問索引查詢(索引列和查詢列一致),減少 select*
explain select name,age,pos,phone from user where age = 20;

mysql 索引失效的原因

5、使用不等于(!=、)

mysql 在使用不等于(!=、)的時候無法使用索引會導致全表掃描(除覆蓋索引外)explain select * from user where age != 20;
explain select * from user where age   20;

mysql 索引失效的原因

mysql 索引失效的原因

6、like 以通配符開頭(%abc)

 索引失效
explain select * from user where name like  %zhangsan

mysql 索引失效的原因

 索引生效
explain select * from user where name like  zhangsan%

mysql 索引失效的原因

7、字符串不加單引號索引失效

explain select * from user where name = 2000;

mysql 索引失效的原因

8、or 連接

 少用 or
explain select * from user where name =  2000  or age = 20 or pos = cxy

mysql 索引失效的原因

9、order by

 正常(索引參與了排序)explain select * from user where name =  zhangsan  and age = 20 order by age,pos;
備注:索引有兩個作用:排序和查找 
 導致額外的文件排序(會降低性能)explain select name,age from user where name =  zhangsan  order by pos;// 違反最左前綴法則
explain select name,age from user where name =  zhangsan  order by pos,age;// 違反最左前綴法則
explain select * from user where name =  zhangsan  and age = 20 order by created_time,age;// 含非索引字段 

mysql 索引失效的原因

mysql 索引失效的原因

mysql 索引失效的原因

10、group by

 正常(索引參與了排序)explain select name,age from user where name =  zhangsan  group by age;
備注:分組之前必排序(排序同 order by)

mysql 索引失效的原因

 導致產生臨時表(會降低性能)explain select name,pos from user where name =  zhangsan  group by pos;// 違反最左前綴法則
explain select name,age from user where name =  zhangsan  group by pos,age;// 違反最左前綴法則
explain select name,age from user where name =  zhangsan  group by age,created_time;// 含非索引字段 

mysql 索引失效的原因

mysql 索引失效的原因

mysql 索引失效的原因

使用的示例數據

mysql  show create table user \G
******************************************************
 Table: user
Create Table: CREATE TABLE `user` ( `id` int(10) NOT NULL AUTO_INCREMENT,
 `name` varchar(20) DEFAULT NULL,
 `age` int(10) DEFAULT  0 ,
 `pos` varchar(30) DEFAULT NULL,
 `phone` varchar(11) DEFAULT NULL,
 `created_time` datetime DEFAULT NULL,
 PRIMARY KEY (`id`),
 KEY `idx_name_age_pos_phone` (`name`,`age`,`pos`,`phone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

看完了這篇文章,相信你對 mysql 索引失效的原因有了一定的了解,想了解更多相關知識,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

向 AI 問一下細節

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-18發表,共計2612字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 化德县| 丹阳市| 邓州市| 临武县| 贵南县| 左云县| 满洲里市| 达拉特旗| 灵石县| 慈利县| 高要市| 巴林左旗| 上饶市| 白朗县| 茌平县| 富阳市| 罗平县| 乌兰浩特市| 德化县| 天等县| 新乐市| 虹口区| 潜江市| 巴中市| 达州市| 莎车县| 长治市| 辽宁省| 松原市| 大洼县| 迁西县| 江孜县| 长武县| 吉首市| 兴国县| 绥中县| 资中县| 邹城市| 五大连池市| 建水县| 滨海县|