select 常量表达式, 其它字段 from 表名;
例如
select to_char(sysdate, 'yyyy'), cloumn1 from tables;这样的sql,我一直以为数据库会在分析sql时做一些优化
将to_char(sysdate, 'yyyy')
转换成常量2010 sql执行效率应该与
select '2010',  cloumn1 from tables;
相当但今天听人家没这回事,不知道是不是这样?如果是的话有没有什么办法让数据库做出这样的优化呢?

解决方案 »

  1.   

    执行计划能看出什么吗 我看不出来 下面是两者的执行计划
    select * from table(dbms_xplan.display);
    select * from table(dbms_xplan.display);PLAN_TABLE_OUTP                                     
    ------------------------------------------------------
                                                          
    ------------------------------------------------------
    | Id  | Operation        | Name | Rows  | Cost (%CPU)|
    ------------------------------------------------------
    |   0 | SELECT STATEMENT |      |     1 |     2   (0)|
    |   1 |  FAST DUAL       |      |     1 |     2   (0)|
    ------------------------------------------------------
                                                          
    Note                                                  
    -----                                                 
       - 'PLAN_TABLE' is old version                      
    explain plan for select 2010 from dual;
    select * from table(dbms_xplan.display);PLAN_TABLE_OUTP                                     
    ------------------------------------------------------
                                                          
    ------------------------------------------------------
    | Id  | Operation        | Name | Rows  | Cost (%CPU)|
    ------------------------------------------------------
    |   0 | SELECT STATEMENT |      |     1 |     2   (0)|
    |   1 |  FAST DUAL       |      |     1 |     2   (0)|
    ------------------------------------------------------
                                                          
    Note                                                  
       - 'PLAN_TABLE' is old version