Java小强个人技术博客站点    手机版
当前位置: 首页 >> DB >> Oracle查询 关于时间字段的优化

Oracle查询 关于时间字段的优化

95120 DB | 2014-11-26

我先给大家看两个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的调优。


推荐您阅读更多有关于“ oracle sql 数据库 优化 调优 ”的文章

上一篇:安全狗客户端,更好的远程桌面 下一篇:UDP 上传文件 多线程 修正

猜你喜欢

发表评论: