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

在我们日常开发中经常会使用到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')

 

你可能感兴趣的:(SQL,PLSQL)