概述
我先给大家看两个SQL,大家看看那个执行更快:
SQL1:select * from table a where to_char(a.create_time,'yyyy-MM-dd hh:mm:ss')>'2014-11-26'
SQL2:select * from table a where create_time>to_date('2014-11-26 00:00:00','yyyy-mm-dd hh24:mi:ss');
说说这连个SQL的区别,SQL1把表create_time字段转为char后再和'2014-11-26'对比,这样的执行结果是,数据库要把每条数据的这个字段都进行转换。
第二个很好解释,把要对比的字段转为date类型,然后让数据库create_time字段和这个值做对比。
实际执行效果显而易见,第二条语句要比第一条语句快数倍。而且第一条由于需要很多转换,查询的同时也严重影响了数据库的性能。
对于这样的SQL,我的建议是,虽然数据库已经很智能,还是要尽量让数据库少做事情。这样的SQL就是个很好的例子,理论上这两条SQL语句执行都是同样的效果,但是第一条明显就是让数据库多做了非常多的事情。
而实际中,这样简单的问题总是被忽略,所以强烈建议大家实时关注数据库优化和SQL的调优。
最后
以上就是大力白昼为你收集整理的java oracle 时间查询_Oracle查询 关于时间字段的优化的全部内容,希望文章能够帮你解决java oracle 时间查询_Oracle查询 关于时间字段的优化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复