项目中的SQL查询优化案例

本文通过一个实际的SQL查询优化案例,探讨了在Java项目中如何进行SQL优化。分析了在A表关联B表查询中,如何通过调整联合索引的顺序提高效率,以及在大表关联小表和小表关联大表时的性能差异。测试结果显示,正确设置联合索引和关联顺序对于查询速度有显著影响。

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

前言

SQL优化是Java程序员几乎必备的技能,本人也深知其意义,不管是面试还是工作,对我们是非常有帮助的。尤其是开发版本时,需要引入新表的情况,需要考虑未来业务的体量,去建立合适的索引。

案例

取工作中的实际需求来说,有这样一个查询, A表关联B表,条件基本都是在B表上,同时在B表做了order by操作。

explain select d.* from product_demands_demo d JOIN product_demand_push_log_demo l on d.id = l.demand_id where d.created_at >= '2020-01-01'
and l.created_at >= '2020-01-01' and l.purchase_id = 100 and l.channel = 3 order by l.read_flag asc, l.created_at desc

建表语句:已去除一些无关的字段

CREATE TABLE `product_demands_demo` (
       `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
       `created_at` datetime NOT NULL COMMENT '创建时间'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值