[大厂实习记1】关于多个单列索引和联合索引哪个更快

这篇博客记录了作者在大厂实习期间遇到的一个SQL查询优化问题。当查询语句涉及多个单列索引和`IN`操作时,发现并非所有索引都被有效利用。通过研究和实践,作者了解到多个单列索引在`AND`连接条件下,只有第一个索引起作用,而`OR`则可以利用所有索引。为提高效率,建议创建合理的联合索引,并将区分度高的字段放在前面。此外,作者分享了实习期间的工作内容和成长体验,强调了理解业务和写出清晰代码的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天,mentor让查一个接口的select语句为什么那么慢。
在这里插入图片描述

于是就去看了,这个接口用了很多单列索引和in。以及模糊搜索,
但是因为需求也没办法写成 like “xx%”这种形式,所以目前就从单值索引和in下手。
在这里插入图片描述

我第一反应就是explain语句去看一下走没走索引,是不是走全表了,什么查询类型。

大方向没错,就是中间出了点小插曲,索引命名xx_xx真的很像联合索引。。。结果是单列索引。。嗯。。

在这里插入图片描述

我就有个疑问,多个单列索引和联合索引(目前没有联合索引)效率差多少?

在这里插入图片描述

于是踏上了求知之旅,到底答案是什么,博客和explain关键字一起说话。
首先查了下博客看有没有能解答我疑惑的。
还真有,结论是:

如果两(多)个单列索引的查询条件 用 and 连接,会导致只有第一个单列索引生效ÿ

### 如何在 IntelliJ IDEA 中配置和连接数据库 #### 打开 IntelliJ IDEA 并启动数据库工具 为了开始配置并连接至本地 MySQL 数据库,需先打开 IntelliJ IDEA[^1]。 #### 添加数据源 - 导航到 **Database** 工具窗口。 - 点击加号 (+) 图标来新增一个数据源选项。 - 从列表中选择 **MySQL**, 此举旨在建立与特定类型的数据库系统的链接[^2]。 #### 配置数据源属性 当选择了 MySQL 后会弹出一系列输入框用于填写要的连接参数: - 输入主机地址 (通常是 `localhost` 或者 `127.0.0.1`) 和端口号(默认为3306)。 - 提供用户名及密码以便鉴权访问目标数据库实例。 - 完成上述字段填充之后点击指向驱动程序设置的指示箭头【Go to Driver】以确认选用匹配当前使用的 MySQL 版本的 JDBC 驱动器。 #### 测试连接 完成所有填项后应尝试测试新创建的数据源能否正常工作。这可以通过点击界面上提供的 【Test Connection】 按钮实现;如果一切顺利,则意味着已成功建立了初步联系。 #### 查看数据库资源管理面板 一旦连接被验证无误,在 IDE 的右边栏会出现一个新的标签页显示 Database 图标,并可以在项目的结构视图里发现代表此次新建连接的相关文件节点[^3]。 #### 将 MySQL 驱动集成进项目依赖 对于某些情况可能还需要手动引入外部库支持才能确保应用程序内部能调用到正确的类加载路径下的 API 函数来进行 SQL 查询等操作。具体做法是在菜单栏依次选取 File -> Project Structure, 接着定位到 Modules 下面的 Dependencies 分区并通过添加 JAR 文件的方式把之前提到过的 MySQL Connector/J 加入进来作为编译期依赖之一[^4]。 ```bash # 示例命令行方式安装 mysql-connector-java(仅作参考并非要步骤) mvn install:install-file \ -Dfile=/path/to/mysql-connector-java-x.x.xx.jar \ -DgroupId=mysql \ -DartifactId=mysql-connector-java \ -Dversion=x.x.xx \ -Dpackaging=jar ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值