Chinaunix首页 | 论坛 | 博客
  • 博客访问: 832729
  • 博文数量: 105
  • 博客积分: 636
  • 博客等级: 中士
  • 技术积分: 1704
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-11 10:57
文章分类

全部博文(105)

文章存档

2017年(4)

2016年(9)

2015年(18)

2014年(16)

2013年(34)

2012年(24)

分类: Oracle

2012-10-06 17:28:19

今天遇到了一个问题 ,关于对一个表搜索时做全表扫描。拿出来和大家分享一下。
select * from task where is_store=‘Y’;
执行这条语句1个多小时过去了 还是没有结果。
我的分析思路是这样的
 (1)先看执行计划
   对task做的全表扫描,说明is_store上面没有索引
(2)看task表的大小
  task 表共有2百万条数据,是个大表。
 (3)查看字段的组成
  is_store是一个新添加的字段 ,null值比较多 ,y / n 值比较少 最后我查出来 y值只有5条
  (4)查看 user_tab_col_statistics
   看看表task 有没有做过分析。
这些都看过了,想想解决的办法把。
首先在一个大表中做全表扫描 而且只有这么几条数据  可定会耗时费力的,可是应该怎么解决呢
字段  有null值 而且值分类比较少  这是我想到了bitmap索引
create bitmap index bit_index_store on task(is_store)
第一次运行了半个小时都没成功。我又想 会不会是这个表背锁了
于是我关掉所有对这个表的操作,因为还有其他人连接这个库

这次再运行 15分钟成功了

在查询  哈哈  快死了。0.094秒   天壤之别啊





 
阅读(686) | 评论(0) | 转发(0) |
0

上一篇:关于aix的内存

下一篇:oracle 10g em

给主人留下些什么吧!~~