PLSQL查询语句中日期格式使用不当会导致性能和效率很低

2 篇文章 0 订阅

在我们日常开发中经常会使用到SQL语句对数据进行过滤,查询一个时间间隔的数据经常会使用到,请看下面的列子

 

【例子1】

  查询2018/01/01 至 2018/01/30 一个月的数据,当table的数据达到【几百万】行或者更大是,查询耗时【5-10分钟】,严重影响效率和性能,使用to_char函数先将table中的日期格式转换为文本格式【yyyy/MM/dd】耗时最大,如果服务器负荷过大就可能导致【宕机】等严重的问题发生

//下面这个例子是查询一个时间段的数据, 【date】字段在数据库中是Date日期类型的数据
select * from table where to_char(date,'yyyy/MM/dd') between '2018/01/01' and '2018/01/30'

【解决方法】

   【to_char】替换【to_date】

//将to_date函数替换成to_char将大大提高查询性能和效率
select * from table where date between to_date('2018/01/01','yyyy-MM-dd hh24:mi:ss') and to_date('2018/01/30','yyyy-MM-dd hh24:mi:ss')

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值