AI 助理
备案 控制台
开发者社区 Java技术栈 文章 正文

面试官:谈谈 MySQL 联合索引生效、失效的条件?

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
推荐场景:
学生管理系统数据库设计 搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 这道题考查索引生效条件、失效条件。像这类问题才其实很有意义,建议各位以后面试其他伙伴的时候,多侧重这类问题的提问,比考察一般概念性的问题好多了。

这道题考查索引生效条件、失效条件。像这类问题才其实很有意义,建议各位以后面试其他伙伴的时候,多侧重这类问题的提问,比考察一般概念性的问题好多了。


能大概考察应聘者对写的程序是有注重做优化,提高代码质量和程序性能呢 还是只简单的CV了事。


联合索引失效的条件

联合索引又叫复合索引。两个或更多个列上的索引被称作复合索引。


对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部分,但只能是最左侧部分。例如索引是key index (a,b,c)。可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 。** 当最左侧字段是常量引用时,索引就十分有效。**


利用索引中的附加列,可以缩小搜索的范围,但使用一个具有两列的索引不同于使用两个单独的索引。


复合索引的结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏对进行排序,然后按名字对有相同姓氏的人进行排序。 如果您知道姓,电话簿将非常有用; 如果您知道姓和名,电话簿则更为有用,但如果您只知道名不姓,电话簿将没有用处。


所以说 创建复合索引时,应该仔细考虑列的顺序。对索引中的所有列执行搜索或仅对前几列执行搜索时,复合索引非常有用; 仅对后面的任意列执行搜索时,复合索引则没有用处


如:建立 姓名、年龄、性别的复合索引。

create table myTest(
     a int,
     b int,
     c int,
     KEY a(a,b,c)
);
(1) select * from myTest  where a=3 and b=5 and c=4;   ----  abc顺序
abc三个索引都在where条件里面用到了,而且都发挥了作用
(2) select * from myTest  where  c=4 and b=6 and a=3;
where里面的条件顺序在查询之前会被mysql自动优化,效果跟上一句一样
(3) select * from myTest  where a=3 and c=7;
a用到索引,b没有用,所以c是没有用到索引效果的
(4) select * from myTest  where a=3 and b>7 and c=3;     ---- b范围值,断点,阻塞了c的索引
a用到了,b也用到了,c没有用到,这个地方b是范围值,也算断点,只不过自身用到了索引
(5) select * from myTest  where b=3 and c=4;   --- 联合索引必须按照顺序使用,并且需要全部使用
因为a索引没有使用,所以这里 bc都没有用上索引效果
(6) select * from myTest  where a>4 and b=7 and c=9;
a用到了  b没有使用,c没有使用
(7) select * from myTest  where a=3 order by b;
a用到了索引,b在结果排序中也用到了索引的效果,a下面任意一段的b是排好序的
(8) select * from myTest  where a=3 order by c;
a用到了索引,但是这个地方c没有发挥排序效果,因为中间断点了,使用 explain 可以看到 filesort
(9) select * from mytable where b=3 order by a;
b没有用到索引,排序中a也没有发挥索引效果

最后说说索引失效的条件

不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描

存储引擎不能使用索引范围条件右边的列

尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select *

mysql在使用不等于(!=或者<>)的时候无法使用索引会导致全表扫描

is null,is not null也无法使用索引

like以通配符开头(’%abc…’)mysql索引失效会变成全表扫描的操作。

问题: 解决like‘%字符串%’时索引不被使用的方法?

image.png

字符串不加单引号索引失效

SELECT * from staffs where name='2000';  
-- 因为mysql会在底层对其进行隐式的类型转换
SELECT * from staffs where name=2000;  
--- 未使用索引

一般性建议


对于单键索引,尽量选择针对当前query过滤性更好的索引

在选择组合索引的时候,当前Query中过滤性最好的字段在索引字段顺序中,位置越靠前越好。

在选择组合索引的时候,尽量选择可以能够包含当前query中的where子句中更多字段的索引

尽可能通过分析统计信息和调整query的写法来达到选择合适索引的目的

来源: https://smiletimli.blog.csdn.net/article/details/87888809


image.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
-编程工程师-
目录
相关文章
程序员小海绵
|
7天前
|
存储 关系型数据库 MySQL
【Java面试题汇总】MySQL数据库篇(2023版)
聚簇索引和非聚簇索引、索引的底层数据结构、B树和B+树、MySQL为什么不用红黑树而用B+树、数据库引擎有哪些、InnoDB的MVCC、乐观锁和悲观锁、ACID、事务隔离级别、MySQL主从同步、MySQL调优
程序员小海绵
20 4
【Java面试题汇总】MySQL数据库篇(2023版)
服务端技术栈
|
1月前
|
SQL 存储 关系型数据库
复盘女朋友面试4个月的Mysql面试题(1万字)
该文章详细分析了Ribbon的超时配置是否会覆盖OpenFeign的超时配置,并探讨了OpenFeign超时配置能否动态实时修改生效的问题。
服务端技术栈
49 1
复盘女朋友面试4个月的Mysql面试题(1万字)
磊哥聊Java
|
1月前
|
关系型数据库 MySQL Java
面试官:说说MySQL调优?
面试官:说说MySQL调优?
磊哥聊Java
62 5
面试官:说说MySQL调优?
小狮子安度因1
|
1月前
|
SQL 关系型数据库 MySQL
面试准备-MySQL
面试准备-MySQL
小狮子安度因1
21 3
热爱技术的小郑
|
1月前
|
缓存 NoSQL Redis
一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)
这篇文章是关于Java面试中可能会遇到的五个问题,包括MySQL索引类型及其对数据库性能的影响、Redis的RDB和AOF持久化机制、Redis的过期键删除策略、Redis的单线程模型为何高效,以及缓存雪崩、缓存穿透和缓存击穿的概念及其解决方案。
热爱技术的小郑
54 2
热爱技术的小郑
|
1月前
|
算法 关系型数据库 MySQL
一天五道Java面试题----第七天(mysql索引结构,各自的优劣--------->事务的基本特性和隔离级别)
这篇文章是关于MySQL的面试题总结,包括索引结构的优劣、索引设计原则、MySQL锁的类型、执行计划的解读以及事务的基本特性和隔离级别。
热爱技术的小郑
16 1
竹子爱熊猫
|
1月前
|
SQL 存储 关系型数据库
(二十八)MySQL面试通关秘籍:这次你也可以在简历写上精通MySQL!
《MySQL面试通关秘籍》
竹子爱熊猫
139 4
蜗牛ICU
|
1月前
|
存储 关系型数据库 MySQL
MySQL 常见面试题总结(上)
主要介绍 MYSQL 数据库面试中常见的面试问题。
蜗牛ICU
17 0
不吃核桃
|
2月前
|
算法 搜索推荐 NoSQL
面试题MySQL问题之分库分表后的富查询问题处理如何解决
面试题MySQL问题之分库分表后的富查询问题处理如何解决
不吃核桃
40 3
不吃核桃
|
2月前
|
运维 关系型数据库 MySQL
面试题MySQL问题之MySQL集群的单点失效如何解决
面试题MySQL问题之MySQL集群的单点失效如何解决
不吃核桃
89 2

Java技术栈

热门文章

最新文章

  • 1
    面试必问的4种单点登录的实现方式,你知道几个?
  • 2
    面试题24解析-详谈DNS域名解析过程
  • 3
    【面试】阿里 iOS 开发实习电话面试记录(二)
  • 4
    think in java interview-高级开发人员面试宝典(三)
  • 5
    面试必问:JVM类加载机制详细解析
  • 6
    一道面试题考验了你对java的理解程度
  • 7
    【C++的多态】多态的概念|| 多态的定义及实现||多态的原理||多态的构成条件||虚函数表||C++11 override 和 final ||重载、覆盖(重写)、隐藏(重定义)的对比||常见面试题
  • 8
    Redis常见面试题总结
  • 9
    软件测试面试题:试述软件的概念和特点?软件复用的含义?构件包括哪些?
  • 10
    软件测试mysql面试题:索引有哪几种类型?
  • 1
    Mysql多表数据需进行联动修改得方案
    36
  • 2
    MySQL 启动日志报错: File /mysql-bin.index not found (Errcode: 13 - Permission denied)
    148
  • 3
    【Elasticsearch】在es中实现mysql中的FIND_IN_SET查询条件
    57
  • 4
    关系型数据库mysql数据恢复执行恢复操作
    39
  • 5
    关系型数据库mysql数据恢复选择恢复类型
    41
  • 6
    MySQL—子查询
    37
  • 7
    MySQL数据库—多表设计与关联查询
    37
  • 8
    MySQL数据库—查询:关联查询(一篇教会你在多表关联下查询数据)
    79
  • 9
    MySQL数据库—DQL查询语句(一篇教会你快速找到想要的数据)
    42
  • 10
    MySQL数据库—初识数据库 | DDL语句 | DML语句
    42
  • 相关课程

    更多
  • MySQL实战进阶
  • 数据库及SQL/MySQL基础
  • Java面试疑难点解析 - 面试技巧及语言基础
  • Java面试疑难点解析 - Java Web开发
  • Java面试疑难点解析 - 系统架构及项目设计
  • 云数据库MySQL快速入门
  • 相关电子书

    更多
  • 阿里云技术面试红宝书
  • 超全算法笔试-模拟题精解合集
  • 程序员面试宝典
  • 相关实验场景

    更多
  • MySQL引擎及架构优化
  • 基于EBS部署高性能的MySQL服务
  • 5分钟上手Flink MySQL连接器
  • 云端MySQL的安装及应用
  • SQL进阶之约束、索引
  • 手动部署MySQL数据库(Alibaba Cloud Linux 2)
  • 推荐镜像

    更多
  • mysql
  • mariadb
  • postgresql
  • 下一篇
    通义千问API入门教程

    深圳SEO优化公司湖里区网站优化推广哈尔滨优化网站连云港网站搜索优化公司苏州网站优化方法某网站搜索引擎优化报告抚远网站优化洛阳ai网站快速排名优化宁阳网站优化公司网站竞价和优化区别太原整站优化网站网站优化怎么提升页面济南哪家网站优化好开封搜索引擎网站优化代办有哪些网站优化的b2b网站seo优化方案网站排名优化专业公司网站建设长葛专业网站优化哪家快兰州网站排名优化服务汕尾信誉好的免费网站优化三门峡营销型网站优化平台百度推广和seo优化网站乐昌网站免费优化江门设备网站seo优化网站广告位优化网站怎么优化数据存储网站后台维护优化武汉优化网站公司刷pc网站优化快速排名团购网站商家优化标准深圳公司网站优化在线推广歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

    深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化