国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

面試突擊:什么情況會導致 MySQL 索引失效?

數據庫 MySQL
MySQL 優(yōu)化器就能把這次查詢優(yōu)化轉化為一個常量,如何轉化以及何時轉化,這個取決于優(yōu)化器,這個比 eq_ref 效率高一點。

為了驗證 MySQL 中哪些情況下會導致索引失效,我們可以借助 explain 執(zhí)行計劃來分析索引失效的具體場景。

explain 使用如下,只需要在查詢的 SQL 前面添加上 explain 關鍵字即可,如下圖所示:

圖片

而以上查詢結果的列中,我們最主要觀察 key 這一列,key 這一列表示實際使用的索引,如果為 NULL 則表示未使用索引,反之則使用了索引。

以上所有結果列說明如下:

  • id — 選擇標識符,id 越大優(yōu)先級越高,越先被執(zhí)行;
  • select_type — 表示查詢的類型;
  • table — 輸出結果集的表;
  • partitions — 匹配的分區(qū);
  • type — 表示表的連接類型;
  • possible_keys — 表示查詢時,可能使用的索引;
  • key — 表示實際使用的索引;
  • key_len — 索引字段的長度;
  • ref—  列與索引的比較;
  • rows — 大概估算的行數;
  • filtered — 按表條件過濾的行百分比;
  • Extra — 執(zhí)行情況的描述和說明。

其中最重要的就是 type 字段,type 值類型如下:

  • all — 掃描全表數據;
  • index — 遍歷索引;
  • range — 索引范圍查找;
  • index_subquery — 在子查詢中使用 ref;
  • unique_subquery — 在子查詢中使用 eq_ref;
  • ref_or_null — 對 null 進行索引的優(yōu)化的 ref;
  • fulltext — 使用全文索引;
  • ref — 使用非唯一索引查找數據;
  • eq_ref — 在 join 查詢中使用主鍵或唯一索引關聯(lián);
  • const — 將一個主鍵放置到 where 后面作為條件查詢, MySQL 優(yōu)化器就能把這次查詢優(yōu)化轉化為一個常量,如何轉化以及何時轉化,這個取決于優(yōu)化器,這個比 eq_ref 效率高一點。

創(chuàng)建測試表和數據

為了演示和測試那種情況下會導致索引失效,我們先創(chuàng)建一個測試表和相應的數據:

-- 創(chuàng)建表
drop table if exists student;
create table student(
id int primary key auto_increment comment '主鍵',
sn varchar(32) comment '學號',
name varchar(250) comment '姓名',
age int comment '年齡',
sex bit comment '性別',
address varchar(250) comment '家庭地址',
key idx_address (address),
key idx_sn_name_age (sn,name,age)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 添加測試數據
insert into student(id,sn,name,age,sex,address)
values(1,'cn001','張三',18,1,'高老莊'),
(2,'cn002','李四',20,0,'花果山'),
(3,'cn003','王五',50,1,'水簾洞');

當前表中總共有 3 個索引,如下圖所示:

圖片

PS:本文以下內容基于 MySQL 5.7 InnoDB 數據引擎下。

索引失效情況1:非最左匹配

最左匹配原則指的是,以最左邊的為起點字段查詢可以使用聯(lián)合索引,否則將不能使用聯(lián)合索引。我們本文的聯(lián)合索引的字段順序是 sn + name + age,我們假設它們的順序是 A + B + C,以下聯(lián)合索引的使用情況如下:

圖片

從上述結果可以看出,如果是以最左邊開始匹配的字段都可以使用上聯(lián)合索引,比如:

  • A+B+C
  • A+B
  • A+C其中:A 等于字段 sn,B 等于字段 name,C 等于字段 age。

其中:A 等于字段 sn,B 等于字段 name,C 等于字段 age。

而 B+C 卻不能使用到聯(lián)合索引,這就是最左匹配原則。

索引失效情況2:錯誤模糊查詢

模糊查詢 like 的常見用法有 3 種:

  • 模糊匹配后面任意字符:like '張%'
  • 模糊匹配前面任意字符:like '%張'
  • 模糊匹配前后任意字符:like '%張%'

而這 3 種模糊查詢中只有第 1 種查詢方式可以使用到索引,具體執(zhí)行結果如下:

圖片

索引失效情況3:列運算

如果索引列使用了運算,那么索引也會失效,如下圖所示:

圖片

索引失效情況4:使用函數

查詢列如果使用任意 MySQL 提供的函數就會導致索引失效,比如以下列使用了 ifnull 函數之后的執(zhí)行計劃如下:

圖片

索引失效情況5:類型轉換

如果索引列存在類型轉換,那么也不會走索引,比如 address 為字符串類型,而查詢的時候設置了 int 類型的值就會導致索引失效,如下圖所示:

圖片

索引失效情況6:使用 is not null

當在查詢中使用了 is not null 也會導致索引失效,而 is null 則會正常觸發(fā)索引的,如下圖所示:

圖片

總結

導致 MySQL 索引失效的常見場景有以下 6 種:

  • 聯(lián)合索引不滿足最左匹配原則。
  • 模糊查詢最前面的為不確定匹配字符。
  • 索引列參與了運算。
  • 索引列使用了函數。
  • 索引列存在類型轉換。
  • 索引列使用 is not null 查詢。

責任編輯:武曉燕 來源: Java面試真題解析
相關推薦

2022-09-14 19:50:22

事務場景流程

2021-11-08 15:17:15

變量Defer 失效

2022-09-20 22:27:08

事務失效public 修飾

2024-11-20 08:00:00

死鎖多線程編程

2012-04-25 09:24:40

Android

2020-10-16 17:20:21

索引MySQL數據庫

2020-12-08 09:45:07

MySQL數據庫索引

2022-01-18 06:59:50

HashMap循環(huán)底層

2020-08-07 15:15:01

Java內存泄漏面試

2020-12-11 08:02:16

索引MySQL存儲

2022-05-05 07:38:32

volatilJava并發(fā)

2022-07-27 07:36:01

TCP可靠性

2024-07-03 09:15:33

MySQL表達式索引

2024-05-27 08:04:41

2024-12-11 08:09:54

2010-07-20 12:46:23

SQL Server聚

2024-01-05 14:20:55

MySQL索引優(yōu)化器

2022-06-06 07:35:26

MySQLInnoDBMyISAM

2024-07-05 10:19:59

2025-05-26 08:15:00

Go開發(fā)指針
點贊
收藏

51CTO技術棧公眾號

日韩一区欧美一区| 在线观看爽视频| 日韩一级在线观看| 免费在线观看不卡| 亚洲a级精品| 男同在线观看| 激情综合网俺也去| 久久精品日产第一区二区三区乱码 | 精品国产99国产精品| 性做久久久久久| 日韩一级免费一区| 国产午夜福利视频在线观看| 欧美国产激情二区三区| 黄视频免费在线看| 久久久久久久网站| 久久久久国产精品厨房| 七七成人影院| 国产日韩欧美中文在线播放| www.亚洲色图.com| 亚洲卡一卡二| 91丨九色丨国产在线| 国产一区二区精品久久| 手机av在线播放| 国模一区二区三区私拍视频| 色94色欧美sute亚洲线路一ni | 国产欧美视频在线观看| 日韩三级av高清片| 久久久国内精品| 亚洲毛片aa| 久久综合福利| 亚洲一区在线免费| 国产免费一区二区三区四在线播放| 91av视频在线播放| 26uuu另类亚洲欧美日本老年| 亚洲精品欧美激情| 免费看国产黄色片| 欧美丰满美乳xxx高潮www| 分分操这里只有精品| 日韩在线观看成人| 日韩在线小视频| 欧美高清激情视频| 在线免费观看日本一区| 在线精品国产| 九九亚洲视频| 亚洲精品在线观看91| 国产一区二区精品福利地址| 欧美日韩国产成人精品| 国内成人免费视频| 一区二区三区四区在线| 成午夜精品一区二区三区软件| 欧美日韩国产观看视频| 欧美黑人粗大| 精品亚洲自拍| 国产精品久久久久久久久久妞妞| 亚洲综合三区| 亚洲乱亚洲乱妇| 五月天久久比比资源色| 爽爽淫人综合网网站| 麻豆成人av在线| 国产米奇在线777精品观看| 久久9热精品视频| 国产精品白丝av| 亚洲一区在线观看视频| 欧美日韩一区久久| 久久躁日日躁aaaaxxxx| 国产精品午夜国产小视频| 亚洲看片网站| 男女午夜视频在线观看| 涩涩视频网站在线观看| 四虎成人精品永久免费av九九| 久久机这里只有精品| 亚洲一卡二卡三卡四卡五卡| 日韩成人激情在线| 国产精品久久久久久久一区探花| 三区精品视频| av在线播放免费| 大胆日韩av| 95精品视频在线| 欧美成人精品1314www| 国外色69视频在线观看| 四虎一区二区| 色老板视频在线观看| 主播大秀视频在线观看一区二区| 婷婷精品进入| 亚洲激情男女视频| 欧美激情成人在线视频| 熟女视频一区二区三区| 国产日产一区二区三区| 成人3d精品动漫精品一二三| 蜜臀91精品一区二区三区| 欧美日韩激情小视频| 国产精品理伦片| 日韩一级片在线观看| 国产91一区二区三区| 啊灬啊灬啊灬啊灬高潮在线看| 在线日韩三级| 中文在线资源观看网站视频免费不卡| 色婷婷综合久久久久中文字幕1| 成人jjav| 日韩国产欧美| 亚洲日本va在线观看| 69久久夜色精品国产69乱青草| 三年中国国语在线播放免费| 大胆国模一区二区三区| 91麻豆国产在线观看| 久久久噜噜噜久久人人看 | 玖玖精品一区| 免费在线播放电影| 亚洲国产aⅴ精品一区二区| 麻豆久久久久| 中文字幕在线观看网站| 国产黄色精品| 午夜在线一区| 国产精品盗摄一区二区三区| 欧美日韩亚洲国产综合| 91久久精品日日躁夜夜躁国产| 午夜精品福利一区二区| 天堂91在线| 欧美成人国产| 亚洲美女视频在线| 欧美日韩成人免费| 精品一区二区三区四区在线| 91免费视频网站| 久草在线新视觉| 欧美精品成人| 欧美国产亚洲精品久久久8v| 国语对白在线视频| 日韩美脚连裤袜丝袜在线| 色七七影院综合| 免费91麻豆精品国产自产在线观看| 亚洲欧洲另类精品久久综合| 亚洲wwwww| 日韩图片一区| 欧美一区二区私人影院日本| 亚洲激情电影在线| 性直播在线观看| 免费观看不卡av| 天天色图综合网| av资源站久久亚洲| 97天天综合网| 久久综合色一综合色88| 国产精品揄拍一区二区| 欧美12一14sex性hd| 91综合视频| 欧美三区在线观看| 日本三日本三级少妇三级66| 视频精品一区二区三区| 亚洲va欧美va国产va天堂影院| 久久免费99精品久久久久久| 国产一区2区在线观看| ㊣最新国产の精品bt伙计久久| 国产精品久久久久久久天堂| 成a人片在线观看| 91在线porny国产在线看| 欧洲精品久久久| 日韩av一卡| 成人欧美一区二区三区视频网页| 国产精品福利一区| 亚洲最大的成人网| 国产极品久久久久久久久波多结野| 亚洲最大的成人av| 日韩免费毛片视频| 午夜精品免费| 日韩视频欧美视频| 98在线视频| 亚洲欧洲精品一区二区三区| 国产欧美综合一区| 亚洲人体偷拍| 国产精品白嫩美女在线观看| 九色porny自拍视频在线观看| 亚洲欧美一区二区三区国产精品 | 亚洲欧美韩国| 国产美女在线精品| 国产欧美精品在线| 国产va免费精品观看精品| 欧美日韩激情一区二区| 国产农村av| 91蜜桃在线观看| 男女超爽视频免费播放| 国产一区二区三区的电影 | 欧美丰满老妇厨房牲生活| 日本在线观看不卡视频| 国产精品探花在线| 欧美日韩视频免费播放| 国产成人精品av在线| 国产精品免费一区二区三区在线观看| 福利写真视频网站在线| 色域天天综合网| 国产激情99| 国产日韩av一区| av网站网址在线观看| 久久久久免费观看| 视频在线99| 青青草国产精品97视觉盛宴| 裸模一区二区三区免费| 色一区二区三区四区| 欧美最猛性xxxxx免费| 九九久久婷婷| 亚洲视频一区二区| 高潮一区二区|