oracle sql语句中如果where日期条件的类型不一致(一种可能是我们传递参数java.util.Date会转成java.sql.Timestamp\java.sql.Date后与数据表的实际类型不一致引起),在执行过程中会进行类型转换,这时候索引及相关优化就不起作用,导致性能变得很差。
觖决方法:
1、使用String 类型传递Date对象 ,sql中显式使用to_date函数(此时要注意如果表原类型是Timestamp,也会引起性能问题)
2、如果是ibatis可以用其Inline Parameter Mapping机制指定参数是DATE,这样就不会转成java.sql.Timestamp