6、SAL是Product表中的索引列,请优化如下的SQL语句,并简述原因。
原语句:
SELECT * FROM Product WHERE SAL*12>25000;

解决方案 »

  1.   

    这还有什么好优化的?
    难道:SELECT * FROM Product WHERE (SAL*12) > 25000;
      

  2.   

    我也不清楚,难道用到order by/
      

  3.   

    SELECT Product.字段名 FROM Product WHERE SAL>(25000/12)
    算不算啊
      

  4.   

    这还有什么好优化的?
    难道:SELECT * FROM Product WHERE SAL > 25000/12;说实话没意义,个人认为oracle很聪明很强大
      

  5.   

    SELECT * FROM Product WHERE SAL > 25000/12; 
    oracle不会自动把SAL*12>25000转换为SAL > 25000/12,SAL*12>25000是不会用到索引的。
      

  6.   

    如果在你where子句的左端是一个表达式,
    那么,即使sal字段有索引在执行计划中也不会用上同意写成这样的
    SELECT * FROM Product WHERE SAL > 25000/12; 如果sal字段并没有索引,那么,呵呵,真的没有什么好优化的了
      

  7.   

    5楼的说的对,这样的确是可以把索引用上了,不过好象这个sql语句本身没什么意义
    SELECT * FROM Product WHERE SAL > 25000/12,就为了执行返回一些记录来吗?
      

  8.   

    SELECT * FROM Product WHERE SAL > 25000/12;  
    oracle不会自动把SAL*12>25000转换为SAL > 25000/12,SAL*12>25000是不会用到索引的。我告诉你所有的数据库都是这样的 不要对列进行运算然后比较
      

  9.   

    SELECT * FROM Product WHERE SAL>25000/12
    对索引列进行计算会使索引失效
      

  10.   

    SELECT * FROM Product WHERE SAL  > 25000、12;
    对索引字段加函数或计算, 索引不起作用