GBASE 8s索引分类

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


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

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 (用于加速索引构建和其他引擎操作)
————————————————
版权声明:本文为CSDN博主「请叫我曾阿牛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/David_ifx/article/details/117810895

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值