0
点赞
收藏
分享

微信扫一扫

sql优化案例分析(7)

飞进科技 2022-04-06 阅读 76
数据库

目录

1、通过进行条件加强减少返回记录行

1.1 问题描述

1.2 解决方案


1、通过进行条件加强减少返回记录行

1.1 问题描述

    我们有一个定时任务,定时加载满足条件 STATUS IN (‘0’,‘1‘,’2‘) AND booking_time < {一个动态变化的时间} 的订单数据,然后进行状态同步。sql语句如下:
   

SELECT
	* 
FROM
	flsc_order 
WHERE
	STATUS IN ( '0', '1', '2' ) 
	AND booking_time < str_to_date( '2022-04-24 23:10:00', '%Y-%m-%d %H:%i:%s' ) 
ORDER BY
	booking_time DESC

执行计划:

 

1.2 解决方案

     进行数据同步,一定要对时间条件进行增加,只加载一周之内的数据,这样,可以保证每次加载的数据不会越来越多,此外,因为按照booking_time进行排序,如果该字段上面没有索引,则一定出出现文件排序 Using filesort。因此,为了让条件查询字段booking_time走索引,同时消除filesort,我们将在booking_time创建一个普通索引。

重写之后的sql如下:

SELECT
	* 
FROM
	flsc_order 
WHERE
	STATUS IN ( '0', '1', '2' ) 
	AND booking_time < str_to_date( '2022-04-24 23:10:00', '%Y-%m-%d %H:%i:%s' ) 
	and  booking_time > str_to_date( '2021-12-14 17:52:14', '%Y-%m-%d %H:%i:%s' ) 
ORDER BY
	booking_time DESC

创建索引如下:

执行计划如下:

 

     

举报

相关推荐

0 条评论