select count(*) from tablexxx执行计划

l3751202 2012-02-01 04:47:27
table1的执行计划是 table access full,table2是index fast full scan
二者都是有建index,两者有何区别呢?

对table1进行表分析,分析完执行计划一样是table access full。

在查询table1的时候


WHERE A.CREATE_DATE >=
TO_DATE('2012/01/11 20:00:00',
'YYYY/MM/DD HH24:MI:SS') - 1
AND A.CREATE_DATE <
TO_DATE('2012/01/11 20:00:00',
'YYYY/MM/DD HH24:MI:SS')

只查询一天的资料,走的是index range scan


WHERE A.CREATE_DATE >=
TO_DATE('2012/01/11 20:00:00',
'YYYY/MM/DD HH24:MI:SS') - 1
AND A.CREATE_DATE <
TO_DATE('2012/01/15 20:00:00',
'YYYY/MM/DD HH24:MI:SS')


若查询时间段拉长,就变成table access full了
...全文
130 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdsnhan 2012-02-02
  • 打赏
  • 举报
回复
oracle 有个参数,optimizer_index_cost_adj 他可以设定索引扫描和全表扫表的一个比例值
mingchaoyan 2012-02-01
  • 打赏
  • 举报
回复
这个应该是ORACLE的优化器搞的
mailking 2012-02-01
  • 打赏
  • 举报
回复
ORACLE的优化器会根据运行的成本来选择查询方式
Kevin_dx 2012-02-01
  • 打赏
  • 举报
回复
这个应该是oracle的SQL自优化。

当你从table中查询出来的结果数量在某一个百分比范围内时,就走index。如果超过了这个范围,就直接全表扫。

根据我的经验,我一般在评估建索引的依据时,这个百分比定在10%。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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