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

面試必問:MySQL索引失效的場景有哪些?

數(shù)據(jù)庫 MySQL
const — 將一個主鍵放置到 where 后面作為條件查詢, MySQL 優(yōu)化器就能把這次查詢優(yōu)化轉(zhuǎn)化為一個常量,如何轉(zhuǎn)化以及何時轉(zhuǎn)化,這個取決于優(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 — 大概估算的行數(shù);
  • filtered — 按表條件過濾的行百分比;
  • Extra — 執(zhí)行情況的描述和說明。

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

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

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

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

-- 創(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;
-- 添加測試數(shù)據(jù)
insert into student(id,sn,name,age,sex,address) 
  values(1,'cn001','張三',18,1,'高老莊'),
  (2,'cn002','李四',20,0,'花果山'),
  (3,'cn003','王五',50,1,'水簾洞');

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

圖片圖片

PS:本文以下內(nèi)容基于 MySQL 5.7 InnoDB 數(shù)據(jù)引擎下。

索引失效情況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。

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

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

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

  1. 模糊匹配后面任意字符:like '張%'
  2. 模糊匹配前面任意字符:like '%張'
  3. 模糊匹配前后任意字符:like '%張%'

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

圖片圖片

索引失效情況3:列運算

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

圖片圖片

索引失效情況4:使用函數(shù)

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

圖片圖片

索引失效情況5:類型轉(zhuǎn)換

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

圖片圖片

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

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

圖片圖片

總結

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

  1. 聯(lián)合索引不滿足最左匹配原則。
  2. 模糊查詢最前面的為不確定匹配字符。
  3. 索引列參與了運算。
  4. 索引列使用了函數(shù)。
  5. 索引列存在類型轉(zhuǎn)換。
  6. 索引列使用 is not null 查詢。
責任編輯:武曉燕 來源: Java面試真題解析
相關推薦

2021-12-13 11:12:41

Spring事務失效

2021-05-10 11:15:28

面試索引MySQL

2025-05-28 00:00:01

MySQL場景索引

2022-02-28 08:55:31

數(shù)據(jù)庫MySQL索引

2019-03-15 19:41:39

MySQL面試數(shù)據(jù)庫

2022-05-26 08:23:05

MySQL索引數(shù)據(jù)庫

2024-04-19 13:57:30

索引數(shù)據(jù)庫查詢

2023-02-17 08:02:45

@Autowired@Resource

2023-02-01 07:15:16

2023-06-30 07:58:07

Spring數(shù)據(jù)源事務

2021-12-27 08:22:18

Kafka消費模型

2024-05-08 08:18:05

索引失效場景

2020-07-28 08:59:22

JavahreadLocal面試

2023-06-07 08:08:43

JVM內(nèi)存模型

2021-12-09 12:22:28

MyBatis流程面試

2025-04-23 08:10:00

2023-08-15 15:33:29

線程池線程數(shù)

2020-12-09 10:10:24

MySQL數(shù)據(jù)庫算法

2023-02-02 07:06:10

2023-02-03 07:24:49

雙親委派模型
點贊
收藏

51CTO技術棧公眾號

欧美一级黄色网| 午夜欧美大片免费观看| 无遮挡又爽又刺激的视频| 欧美喷水视频| 欧美日韩性生活视频| av免费网站观看| 久久电影网站中文字幕| 亚洲精品欧美极品| 国产精品色在线网站| 亚洲高清色综合| h视频在线免费| 亚洲国产欧美另类丝袜| 成人毛片一区二区| 成人av中文字幕| 中文字幕综合在线观看| 久久aⅴ国产紧身牛仔裤| 国产日产久久高清欧美一区| 日本午夜精品久久久| 欧美激情小视频| 在线观看欧美| 欧美有码在线视频| 日韩在线第七页| 九九热精品视频国产| 农村寡妇一区二区三区| 暖暖视频在线免费观看| 国产最新精品精品你懂的| 亚洲免费一级电影| 久久久久久女乱国产| 麻豆一区在线| 日韩av在线直播| sis001亚洲原创区| 日韩一区二区三| 男人av在线播放| 制服丝袜日韩国产| 欧美精品高清| 欧美自拍大量在线观看| 天海翼亚洲一区二区三区| 国产欧美精品va在线观看| 中文另类视频| 精品国产电影一区二区| 能看的毛片网站| 亚洲一区二区视频在线观看| 综合国产精品久久久| 成人精品gif动图一区| 一区二区三区入口| 精品国产老师黑色丝袜高跟鞋| 91精品久久| 欧美中文字幕第一页| 99亚洲精品| 粗暴91大变态调教| 欧美日韩一区免费| 久久91视频| 日韩aⅴ视频一区二区三区| 26uuu国产在线精品一区二区| 在线色视频观看| 狠狠干狠狠久久| 亚洲精品777| 欧美一区二区视频17c| 亚洲女厕所小便bbb| 3d性欧美动漫精品xxxx软件 | 成年人视频网站免费观看| 欧美人牲a欧美精品| 香蕉人人精品| 国产视频一区二区三区在线播放 | 一区二区小说| 欧美日韩国产在线播放| 日本一区视频在线观看| 琪琪一区二区三区| 国产精品成人av在线| 亚洲伊人精品酒店| 亚洲欧美日韩国产另类专区| 久久久久黄久久免费漫画| 亚洲91精品在线| 日韩国产欧美在线播放| 玖玖在线免费视频| 久久久久中文字幕2018| 卡一卡二国产精品| 自拍偷拍在线视频| 欧美激情喷水视频| 欧洲精品久久| 久久99精品久久久久久国产越南| 浪潮av在线| 亚洲国产欧美在线人成| 超碰成人av| 亚洲人免费视频| 精品香蕉视频| 你懂的在线视频| 国产精品精品软件视频| 一本一本大道香蕉久在线精品| 波多野结衣一区| 亚洲最新合集| 国产美女直播视频一区| 国产精品久久久久久久久图文区 | 福利在线免费| 91国内在线视频| 日韩福利视频| 佐山爱痴汉视频一区二区三区| 伊人精品在线观看| 久久这里只精品最新地址| 色老头在线一区二区三区| 黄色录像特级片| 亚洲男人第一网站| av在线综合网| 日本一区二区三区电影免费观看| 成人av影视| 国产精品在线看| 日韩精品小视频| 久久精品在这里| 亚洲黄色毛片| 日本精品不卡| 黄动漫网站在线观看| 在线视频不卡一区二区| 少妇高潮久久77777| 国产91丝袜在线播放九色| av在线不卡免费观看| 理论不卡电影大全神| 97影院理论午夜| 精品一区久久久| 久久色精品视频| 一区二区三区丝袜| 东方aⅴ免费观看久久av| 女人色偷偷aa久久天堂| 色呦呦在线免费观看| 又黄又爽在线观看| 91精品久久香蕉国产线看观看| 亚洲免费高清视频| 国产欧美一区二区精品秋霞影院| 久久精品日产第一区二区| 老司机aⅴ在线精品导航| 欧美vide| 中文字幕第88页| 日韩免费中文专区| 国产精品一区二区三区观看 | 91九色国产ts另类人妖| 国产欧美在线一区二区| 91国语精品自产拍在线观看性色| 欧美激情综合网| 99国产精品视频免费观看一公开| 91福利在线免费| 永久免费的av网站| 久久青青草综合| 奇米四色中文综合久久| 成年无码av片在线| 欧美美女一区二区在线观看| 亚洲曰韩产成在线| 国产精品一区三区| 免费观看在线色综合| 国产一区二区三区精品欧美日韩一区二区三区 | 一色桃子一区二区| 亚洲毛片在线免费观看| 亚洲男人7777| 欧美成人精品在线播放| 欧美黑人视频一区| 51色欧美片视频在线观看| 2014国产精品| 久久偷窥视频| 免费特级黄色片| 中文字幕在线观看第三页| 轻轻色免费在线视频| 触手亚洲一区二区三区| 99久久精品免费观看国产| 末成年女av片一区二区下载| www.超碰在线| 国产精品久久麻豆| 国产三级在线观看| 亚洲欧美国产精品桃花| 亚洲香蕉在线观看| 久久久国产精品午夜一区ai换脸| 狠狠干成人综合网| 香蕉久久夜色精品国产使用方法 | 成人观看免费完整观看| 国产精品sss| 欧美日韩成人黄色| 成人福利网站在线观看| 中文字幕高清不卡| 日韩欧美卡一卡二| 91在线免费观看网站| 欧美hdfree性xxxx| 99re6热只有精品免费观看| 激情小说亚洲一区| 欧美亚洲国产怡红院影院| 日本不卡高字幕在线2019| 国产精品无码av无码| 国产综合色在线观看| 懂色av中文字幕一区二区三区| 亚洲精品电影在线| 影音先锋欧美资源| 国产99re66在线视频| 免费欧美在线视频| 日韩国产精品视频| 波多野结衣与黑人| 欧美专区福利免费| 国内精品自线一区二区三区视频| 亚洲国产日韩欧美在线图片| 一本一道久久久a久久久精品91 | 99精品国产一区二区三区不卡| 日韩精品中文字| 日本阿v视频在线观看| 一区二区三区| 一区二区三区在线播|