索引压缩

简介: 星期天看《expert one-on-one oracle》,发现以前建立的一个索引可能不合理,sql语句如下: SELECT NVL (MAX (seeno), 0) + 1   FROM r_register  WHERE dept_code = :1...
星期天看《expert one-on-one oracle》,发现以前建立的一个索引可能不合理,sql语句如下:
SELECT NVL (MAX (seeno), 0) + 1
  FROM r_register
 WHERE dept_code = :1
   AND noon_code = :2
   AND reglevl_code = :3
   AND TRUNC (see_date) = :4

由于使用的是oracle 8.1.7的标准版,不支持函数索引,无法在trunc(see_date)建立索引,我以前建立了一个大索引(dept_code, noon_code,reglevl_code,see_date,seeno),使用全索引(ffs)扫描。但是随着索引变大,执行时间越来越长,当使 用压缩索引并且将索引改为(dept_code,noon_code,reglevl_code,seeno,see_date),压缩前面4项,可以减 少扫描数据块的数量。当我修改索引后,发现索引使用的块数减少很多,
并且意外的发现执行计划发生了变化,如下:
Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=16)
   1    0   SORT (AGGREGATE)
   2    1     FIRST ROW (Cost=3 Card=5625 Bytes=90000)
   3    2       INDEX (RANGE SCAN (MIN/MAX)) OF 'R_REGISTER_I_SEENO_DEPT_CODE_N' (NON-UNIQ
          UE) (Cost=3 Card=5625)

这样的话,发现每天执行会越来越快,但是我检测了索引,还是存在变大(而且很快),不过我估计到一定程度变化不会太快。

最合理的方法还是修改sql语句。


目录
相关文章
|
11月前
|
存储 编解码 算法
什么是压缩算法及压缩算法定义
什么是压缩算法及压缩算法定义
119 0
|
SQL 存储 分布式计算
关于Presto对lzo压缩的表查询使用记录
关于Presto对lzo压缩的表查询使用记录
119 0
关于Presto对lzo压缩的表查询使用记录
|
API Android开发
|
存储 SQL 算法
无序数组压缩查询【转】
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。
172 0
Java字符串压缩(两种压缩方式)
第一种,只统计字符出现次数,比如aabcccccaaa,压缩成a5b1c5 思路:利用hashMap键的唯一性
978 0