请教:关于字段数量对于查询效率的影响

null1027 2007-08-28 10:29:51
select ID FROM A where to_number(id) = 31972

SELECT ID FROM B where to_number(id) = 31972

以上两个sql语句在plsql中执行所耗费的时间之比是1:12,其中A表有50个字段,2万条数据,而B表的数据是在A表基础上增加了200个字段产生的.

请问:
  时间消耗相差这么多的原因是什么?
...全文
230 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobfang 2007-09-04
  • 打赏
  • 举报
回复
话费==>花费
bobfang 2007-09-04
  • 打赏
  • 举报
回复
由于你id上建的是普通索引,这样to_number(id) = XXX就不能用上索引,也就是说要做表扫描,表的字段多也就意味者表占用的空间多,这样表扫描所要读取的数据块就要多,话费的时间自然就要长了。
wffffc 2007-09-04
  • 打赏
  • 举报
回复
字段多了,内容也多占的数据块也多,扫描的时间也长,增加200字段后的每行的长度和原来每行的长度的比是多少?还有你的数据不多,这个比值可能反映不出问题
wang_wuhui 2007-09-03
  • 打赏
  • 举报
回复
多運行幾次再看平均時間..
也許這個影響了...
null1027 2007-09-03
  • 打赏
  • 举报
回复
回kinglht,我原本也是觉得字段数影响不大,但是事实上在记录数不变的情况下,字段数增加到5倍以后,消费的时间增大到12倍,不过为了方便起见我增加的全是number类型的字段。

回wffffc,加了函数以后,恐怕那个索引确实没有用了,这个我疏忽了

谢谢两位。

继续坐等标准答案
wffffc 2007-08-29
  • 打赏
  • 举报
回复
'
wffffc 2007-08-29
  • 打赏
  • 举报
回复
to_number(id) = 31972
这样的话id上的索引已经没用了,要建函数索引或id='31972
null1027 2007-08-28
  • 打赏
  • 举报
回复
哦,补充一下,两个表的id都是有索引的
kinglht 2007-08-28
  • 打赏
  • 举报
回复
字段应该影响不大吧

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧