今天遇到了一个问题 ,关于对一个表搜索时做全表扫描。拿出来和大家分享一下。
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秒 天壤之别啊
阅读(727) | 评论(0) | 转发(0) |