您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Oracle case when索引 空值索引 位图索引

2024/3/9 16:25:06发布36次查看
t1表里面有200w条数据,其中id=2只有10条记录,查询id=2时就可以用到case when索引。 建索引可以这样: create index i_1 on t1(
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的行都会被锁。
位图索引一般适用于分析系统,而更新数据前有必要时也要删除索引,查询时再重建。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product