oracle case when索引 空值索引 位图索引
来源:互联网 发布:手机新软件 编辑:程序博客网 时间:2024/06/07 11:15
T1表里面有200W条数据,其中ID=2只有10条记录,查询ID=2时就可以用到case when索引。
建索引可以这样:
CREATE INDEX I_1 ON T1(CASE WHEN ID>1 THEN ID ELSE NULL END);
或者类似CASE ID WHEN 2 THEN 2...或者不需要大于小于,可以用DECODE
查询的SQL也要改:
SELECT * FROM T1 WHERE ID=2;
改为
SELECT * FROM T1 WHERE (CASE ID WHEN 2 THEN 2 ELSE NULL END)=2;
这个WHERE后面的括号要跟索引内容一模一样。总之这还是一个函数索引。
访问的数据块从几千个下降到几个。
这个索引原因是空值NULL不加入索引中,这样索引块其实只包含ID=2的很少的几行。
当查询条件WHERE ID IS NULL时,想使用索引的话,可以这样建一个联合索引:
CREATE INDEX I_2 ON T1(ID,0);
将执行索引扫描。
位图索引构造与B树索引不同。假如列GENDER只存在两个值,在上面建一个位图索引的话,就生成两个位图,每个位图中包含对应的所有的行号。其中的具体实现比较复杂,还有起止行等等概念。
位图索引不适合更新频繁的应用场景,比如在线联机系统使用位图索引必须慎重。因为如上,当INSERT 一条GENDER=1的数据,那全表所有GENDER=1的行都会被锁。
位图索引一般适用于分析系统,而更新数据前有必要时也要删除索引,查询时再重建。
- oracle case when索引 空值索引 位图索引
- oracle的位图索引
- oracle之位图索引
- Oracle 位图索引
- ORACLE-位图索引
- oracle 位图索引
- [Oracle] 位图索引
- Oracle位图索引
- Oracle位图索引
- 【oracle】位图索引 bitmap
- oracle位图索引
- Oracle之位图索引
- oracle位图索引
- oracle索引空值问题
- [Oracle]B-树索引与位图索引
- oracle 位图索引 B-树索引
- Oracle索引——位图索引
- oracle索引介绍之位图(bitmap)索引
- C#多态实现之虚方法
- POJ——1786(模拟)
- 在Android下加载驱动并进行调用
- 面试题8:旋转数组中的最小数字
- log4j
- oracle case when索引 空值索引 位图索引
- hdu1194
- hdu1259
- visual studio 解决方案项目结构部署和配置
- struts2 interceptor
- 格式化输入输出
- 非打印字符-转义序列
- 静态 与动态 (小探究)
- JavaBean