为employeeid,to_char(workdate,'yyyy-mm') 创建索引。

解决方案 »

  1.   

    你可以先看不用sum的语句执行速度
    建议将to_char(workdate,'yyyy-mm')='2005-05'用法修改为:workdate= to_date('2005-05','yyyy-mm')
    然后再字段workdate上建立索引(如果条件2005-05的纪录不是很多的情况下)
      

  2.   

    workdate= to_date('2005-05','yyyy-mm')
    这样可能会查不到结果吧
    workdate >= to_date('2005-05','yyyy-mm') and workdate < add_months(to_date('2005-05','yyyy-mm'),1)
      

  3.   

    大吓们都说对了,但我看了一下觉得还是有点问题呀,因为在不同的机器里面日期格式是不一样的,所以一定要以to_char(workdate,'yyyy-mm')='2005-05'的形式来读取日期呀,求各位大吓帮帮忙哦,呵3Q
      

  4.   

    日期表示的格式不一样,但是存储的格式是一样的
    在同台机器上
    select to_date('2009-06-09','yyyy-mm-dd') from dual

    select to_date('2009-02-09','yyyy/mm/dd') from dual
    结果是一样的
      

  5.   

    用decode来替换case会更快比如sum(decode(leavetypeid,1,holidayhours,0))
      

  6.   

    不是任何时候都可以创建索引来解决问题,比如在已经建好的大型数据库上,一般数据库结构都不能修改的,所以关键还是要学会SQL优化。