select ID FROM A where to_number(id) = 31972SELECT ID FROM B where to_number(id) = 31972以上两个sql语句在plsql中执行所耗费的时间之比是1:12,其中A表有50个字段,2万条数据,而B表的数据是在A表基础上增加了200个字段产生的.请问:
  时间消耗相差这么多的原因是什么?

解决方案 »

  1.   

    to_number(id) = 31972
    这样的话id上的索引已经没用了,要建函数索引或id='31972
      

  2.   

    回kinglht,我原本也是觉得字段数影响不大,但是事实上在记录数不变的情况下,字段数增加到5倍以后,消费的时间增大到12倍,不过为了方便起见我增加的全是number类型的字段。回wffffc,加了函数以后,恐怕那个索引确实没有用了,这个我疏忽了谢谢两位。继续坐等标准答案
      

  3.   

    由于你id上建的是普通索引,这样to_number(id) = XXX就不能用上索引,也就是说要做表扫描,表的字段多也就意味者表占用的空间多,这样表扫描所要读取的数据块就要多,话费的时间自然就要长了。