函数索引用不上请教

pengxn 2009-04-15 11:27:06
create table ppt1
(
dual varchar(8)
)

create table ppt2
(
dual varchar(8)
)

create index IDX_DZ_DF_TT_200902_4 on ppt1 (TO_NUMBER(dual))

create index IDX_DZ_DF_TT_200902_1 on ppt2 (TO_NUMBER(dual)+1)

select * from
ppt1 a,ppt2 b
where to_number(a.dual) = to_number(b.dual)+1



最后的执行计划用的全表扫
...全文
74 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
blueskyj2ee 2009-04-16
  • 打赏
  • 举报
回复
也可以通过提示来强制使用索引......
mosaic 2009-04-15
  • 打赏
  • 举报
回复
楼主测试用的表估计没多少数据,用小表,则索引的代价可能全表扫描还高,就不会用索引了。

还有一种可能是to_number(a.dual) = to_number(b.dual)+1 这个关联本身涉及的数据量在整个表中的数据中占大部分。
又是违规昵称 2009-04-15
  • 打赏
  • 举报
回复
你表里都有多少条记录,查询返回了多少记录?
IT农夫 2009-04-15
  • 打赏
  • 举报
回复
Oracle 用的是cost based optimizer
对建了索引的字段作为查询条件不一定会使用索引。
比如像楼上各位所说的,表的数据很少,可能会采用全表扫描。
vc555 2009-04-15
  • 打赏
  • 举报
回复
贴执行计划及统计信息。

17,082

社区成员

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

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