Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

30

积分

0

好友

0

主题
1#
发表于 2012-2-19 22:30:25 | 查看: 5111| 回复: 8
有个timekey是日期格式的,按月建了分区,在查询时where timeky>=to_date('2011-12-01','yyyy-mm-dd') and timeky<to_date('2011-12-05','yyyy-mm-dd') ,从执行分析上看到是有使用timekey的索引,但我日期是跨月的时候,where timeky>=to_date('2011-11-01','yyyy-mm-dd') and timeky<to_date('2011-12-05','yyyy-mm-dd'),在执行分析上就是all table full skim,就没有使用索引了,这是为什么?
2#
发表于 2012-2-19 23:07:34
具体问题具体分析 ,请贴出 数据结构 和执行计划

回复 只看该作者 道具 举报

3#
发表于 2012-2-19 23:11:21
或者 你 运行一下这个帖子里的脚本 http://www.oracledatabase12g.com ... h-check-script.html

收集信息后上传附件

回复 只看该作者 道具 举报

4#
发表于 2012-2-20 13:06:39
今天再查询发生了变化,不管我怎么执行都没有index range使用到了,

索引是建了的create index TEST.INDX_t_DOTIME on TEST.t(DOTIME);

2.jpg (57.68 KB, 下载次数: 384)

2.jpg

回复 只看该作者 道具 举报

5#
发表于 2012-2-20 19:36:29
1.  select *   返回所有列,需要访问索引后 ,在acess table by rowid
2. where timeky>=to_date('2011-12-01','yyyy-mm-dd') and timeky<to_date('2011-12-05','yyyy-mm-dd') 这个条件具有比较好的选择性, 只返回同一个分区内  5/30  %的数据

3. where timeky>=to_date('2011-11-01','yyyy-mm-dd') and timeky<to_date('2011-12-05','yyyy-mm-dd') 此条件的选择性差

4. 确认你当前的 索引没有失效

回复 只看该作者 道具 举报

6#
发表于 2012-2-20 20:44:20
1.select *   返回所有列,需要访问索引后 ,在acess table by rowid
这个怎么理解?是说我如果不指定列,会Full scan 我指定列的话,我试了一下,指定一些列的话,只有单独指定dotime (索引列) explain plan会是显示 select statement,goal=all_rows --indext range scan 其他的列还是是table access full,是不是我要让rowid也是个索引?

4.我确认索引没有失效

回复 只看该作者 道具 举报

7#
发表于 2012-2-20 21:15:20
不管我建dotime索引是Local 还是global index都是没有使用到这个索引查询的,

[ 本帖最后由 bowie2360 于 2012-2-21 16:22 编辑 ]

回复 只看该作者 道具 举报

8#
发表于 2012-2-21 22:14:37
CBO 是基于统计信息和成本计算的 :

select *  返回所有列,

1.index range scan + table accessed by rowid => 选择性好时理想
2.table full scan             =>   选择性较差的时候比 1好

where timeky>=to_date('2011-11-01','yyyy-mm-dd') and timeky<to_date('2011-12-05','yyyy-mm-dd')

符合这个条件  有超过一整个分区的数据, 当然是 FULL table scan更好。

CBO 不是RBO , 会根据你给定的 查询条件 选择合适的执行计划。

回复 只看该作者 道具 举报

9#
发表于 2012-2-21 22:23:47
建议去了解下  CBO是如何工作的 , 参考 How the CBO works by  Jonathan Lewis http://t.askmaclean.com/thread-386-1-1.html

否则很难理解 oracle为什么 要用 又为什么不用索引。

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-15 01:58 , Processed in 0.054688 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569