前言
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 '创建时间'