Welcome 微信登录

首页 / 数据库 / MySQL / Oracle case when索引 空值索引 位图索引

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相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12RMAN-00600: internal error, arguments [10019] [krmxcr] [] [] []Linux源码安装MySQL 5.6.12 (Cmake编译)相关资讯      Oracle索引  Oracle Case when  Oracle空值索引  Oracle位图索引 
  • Oracle索引种类之位图索引  (今 16:12)
  • 关于Oracle位图索引内部浅论  (09/17/2015 19:23:59)
  • Oracle 索引的可见与隐藏(visible  (07/18/2015 09:41:42)
  • Oracle跳跃式索引扫描测试  (08月09日)
  • Oracle组合索引与回表  (08/07/2015 18:11:53)
  • Oracle 索引基本原理  (04/12/2015 18:03:58)
本文评论 查看全部评论 (0)
表情: 姓名: 字数