解决方案 »

  1.   

    对于这两个语句来说,执行的效率应该是一样的,差异应该是解析语句的消耗另外你这两个语句传入的时间是否是一样的?
    连续执行的两个语句如果完全一样,oracle会从数据缓冲区直接读取数据不会再去数据库中重新查询的
    可以试下将两个语句的执行顺序颠倒一下,再看看两个语句执行速度如何
      

  2.   

    分别在后台找到语句对应的sql_id
    在v$sql_plan中找出执行计划来进行比较
      

  3.   

    LZ ,你这张表的 date1 字段,是日期型的。语句1 :
    where date1 >= ? and date1 <= ?

    传入的参为字符串型,这里存在着了一个隐式的数据转换,把 date1 先转成了字符串型,再去比较 ,浪费了大量时间。
    语句2:
    where date1 >= to_date(?,'yyyy-MM-dd HH24:mi:ss') and date1 <= o_date(?,'yyyy-MM-dd HH24:mi:ss') 

    这里,你直接传入了日期型,不存在转换,直接比较。PS:你这张表的数据,是不是数据量比较大,比如,超过了 10W 行?