informix索引分类

B-Tree

优点:
– 根节点指向多个分支节点
– 分支节点指向叶子节点
– 叶子节点指向实际的数据行
缺陷:
– 当搜索一个连续的范围时效率不高
– 我们可以在上下方向方便的搜索,但是左右方向却不行

informix索引分类

B+ Tree: 

 

级别:
        – 最上层只有一个根页/结点
       – 每个分支节点都有指向更低层节点的指针,和指向同一级别下一个节点的指针
       – 每个叶子节点都有一个指向表中数据行地址的列表
在叶子页/节点中的关键字值是有序的:
       – 一个索引项包含一个关键字值和1到多个的数据行指针
       – 关键字的值是来自于索引列中某一行的数据
       – 一个数据行指针提供了能定位到数据行的关键字(rowid)
在B+ 树中:
      – 根节点指向分支节点
      – 分支节点有向下,向左和向右的指针
      – 叶子节点可以指向左,右,并向下通过rowid指向数据行
      – 能够从一个节点向左或向右跳转到它的兄弟节点的能力是B+树的一个亮点

informix索引分类

 

Hash:待补充

Bitmap:待补充

 

CLUSTER INDEX:

用于在物理上根据索引顺序组织数据的存储位置,去除extents内数据的交叉,

       --使得数据页连续,继而可以避免排序操作
使用cluster index:
       – 静态表,很少或者不修改数据的表(不适合动态表)
       – 对于需要频繁读操作,并且读取记录数量巨大的表
使用CLUSTER在物理上基于索引循序重组数据记录:
       – Informix会基于索引顺序重新组织数据页
       – 因此,一个表只能有一个CLUSTER索引
CREATE CLUSTER INDEX ix_cust ON customer(lname);

ALTER INDEX ix_cust TO CLUSTER;

函数索引:

          functional index可以是B-tree index, R-tree index。

函数必须基于用户定义函数(UDF)
       – 不能基于built-in function 创建函数式索引
       – 但是我们可以创建一个调用build-in函数的UDF,然后基于它创建函数式索引

 B-Tree 的例子:
       CREATE INDEX ix1 on state (UPPER(sname));    ###无效(upper 是built-in function):

CREATE FUNCTION myupper (v_value char(15))
RETURNING char(15) with (not variant);
define r_value char(15);
execute function upper(v_value) into r_value;
return r_value;
END FUNCTION;
create index ix1 on state (myupper (sname));         #### 有效(定义UDF myupper):

 

R-Tree

              用于GIS处理,暂时不用关心拉。

 

索引示例:

CREATE UNIQUE CLUSTER INDEX ix_manufact ON manufact(manu_code)  FILLFACTOR 80;
CREATE INDEX ix_man_stk ON  items(manu_code desc, stock_num);
CREATE INDEX order_ix1 ON orders (order_num, order_date desc);
 

Attached index没有单独的表空间,并且索引数据是在表的tblspace中与数据交错存放的.

Detached Indexes是说index的extents是与表的extents分开的,存储在自己的tblspace中.

 

增加主键:

ALTER TABLE tab1 ADD CONSTRAINT PRIMARY KEY (col1);

 

key-only搜索: 

       当查询的所有列都在索引中时,也就是select和where后面的列都在索引中的时候就会使用key-only方式搜索。也就是所谓的三星索引。

 

涉及索引性能的几个内容:

1. 估算创建索引需要的临时dbspace空间和存储索引需要的空间,优化存储索引和临时dbspace的位置(DBSPACETEMP)
2. 设置PDQPRIORITY 和PSORT_NPROCS 环境变量,用于优化并行的索引构建

3.  如果有必要,检查并优化以下配置参数
     B-tree cleaners (自动清除已删除关键字对应内存页的线程)
     Buffers (I/O数据和索引缓存)
     Temporary dbspaces (用于索引构建)
      Parallelism (用于加速索引构建和其他引擎操作)

 

启用禁用索引:

set constraints/indexes … enabled

上一篇:informix 日期边界处理


下一篇:寄存器理解 及 X86汇编入门