美文网首页
一次mysql联合索引的面试题

一次mysql联合索引的面试题

作者: 提米锅锅 | 来源:发表于2019-11-16 22:20 被阅读0次

mysql联合索引是经常被碰到的问题,上周面试了一个牛逼的国际旅游公司就被问到了,之前觉得好理解,没想到追问之下也是破绽百出,我还原下当时的场景。

说说mysql的联合索引,如果a b c建立联合索引,搜ac和bc会用到吗?
:不会,联合索引本质是建立a,ab abc 3个索引,遵循最左匹配原则,这个过了。

联合索引的好处?
我举了个排序的例子,如果搜索ab,联合索引按ab排序,所以可以省掉排序的操作,提供性能
我想这个也能过,结果面试官追问。。

如果不考虑排序,有2个单独的索引a和b,查两次不是一样么,会慢吗?
我这里被挖坑了,正确答案是mysq分析器一次只会选一个索引,不会选两个,所以这种场景搜索两个字段用联合索引肯定比单个所以快。

后来查了资料,mysql新版本也支持索引合并,也就是可以同时查2个单独的索引a和b,这里我们比较下和联合索引查找的区别:
两个单独的索引a和b,假设要找a=100,b=200的数据,索引a只能找出a=100的记录,可能里面有大部分b不是200,那么还是会读取过多的记录,然后利用b索引的结果取过滤。

联合索引a和b都已经在索引树了,所以匹配直接在索引上就可以完成,最终只会去读复合条件的记录,减小了io时间。

这篇文章的一句描述不错,可以帮你理解聚合索引的本质(https://www.cnblogs.com/leader007/p/10524265.html)

利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引 不同于使用两个单独的索引。复合索引的结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏对进行排序,然后按名字对有相同姓氏的人进行排序。如果您知 道姓,电话簿将非常有用;如果您知道姓和名,电话簿则更为有用,但如果您只知道名不姓,电话簿将没有用处。

相关文章

  • MySQL-联合索引

    一、什么是联合索引 两个或更多个列上的索引被称作联合索引,联合索引又叫复合索引。对于复合索引:Mysql从左到右的...

  • 一次mysql联合索引的面试题

    mysql联合索引是经常被碰到的问题,上周面试了一个牛逼的国际旅游公司就被问到了,之前觉得好理解,没想到追问之下也...

  • MySQL联合索引和索引不生效的情况研究

    联合索引 测试前准备 mysql版本5.7.22 创建表结构: 插入临时数据: 表内容: 创建联合索引: 测试联合...

  • MySQL数据库

    索引有哪些,用性别做联合索引有没有效果 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数...

  • MYSQL记录

    简单描述MySQL中,索引、主键、唯一索引、联合索引的区别,对数据库的性能有什么影响? MySQL索引的基础和类型...

  • PHP面试之数据库—创建高性能索引

    真题 简单描述MySQL中,索引、主键、唯一索引、联合索引的区别,对数据库的性能有什么影响? MySQL索引的基础...

  • MySQL与Redis

    MySQL常见面试题及答案 1.MySQL的索引(索引的结构) 2.MySQL的事务 3.事务的隔离级别 4.My...

  • face17 mysql创建高性能索引

    mysql创建高性能索引 简单描述 mysql中 索引 主键 唯一索引 联合索引的区别对数据库性能有什么影响 创建...

  • mysql 查询效率优化之 常用索引的几种类型 新手使用教程,少

    Mysql常见索引有:主键索引、唯一索引、普通索引、全文索引、组合索引(联合索引,多列索引) 一、建立的方法介绍 ...

  • 存储结构,单索引,联合索引

    转自:https://www.phpsong.com/586.html MySQL单列索引和组合索引(联合索引)的...

网友评论

      本文标题:一次mysql联合索引的面试题

      本文链接:https://www.haomeiwen.com/subject/rfduictx.html