Phoenix二级索引

Phoenix二级索引提供了解决HBase非rowKey查询性能问题的方案,包括覆盖索引、函数索引、全局索引和本地索引。然而,频繁的插入操作可能因重建索引引发性能和稳定性问题,可能导致系统挂掉。建议尽量使用rowKey查询,避免在写密集型场景下依赖二级索引。此外,查询语句包含非索引列或null值时仍会全表扫描。
摘要由CSDN通过智能技术生成

        在HBase中,只有一个单一的按照字典序排序的rowKey索引,当使用rowKey来进行数据查询的时候速度较快,但是如果不使用rowKey来查询的话就会使用filter来对全表进行扫描,很大程度上降低了检索性能。而Phoenix提供了二级索引技术来应对这种使用rowKey之外的条件进行检索的场景。其主要有以下四种索引类型

1、Covered Indexes(覆盖索引)
覆盖索引:只需要通过索引就能返回所要查询的数据,所以索引的列必须包含所需查询的列(SELECT的列和WHRER的列)

不同于hbase的Coprocessor机制创建的二级索引表,Phoenix下的二级索引可以是覆盖索引,即把关心的数据和索引项存储在一张表中,这样就减少了一次读表的时间,而后者主要通过查询关键字再查到主键再利用主键查询最终结果。效率上来讲,是phoenix的一半。
用法示例如下:

CREATE INDEX my_index ON my_lin(v1,v2) INCLUDE(v3)

2、Functional indexes(函数索引)
从Phoeinx4.3以上就支持函数索引,其索引不局限于列,可以合适任意的表达式来创建索引,当在查询时用到了这些表达式时就直接返回表达式结果

函数索引不仅允许直接在列上创建索引,还允许通过基于某一列计算值来创建索引。
用法示例如下:

CREATE INDEX UPPER_NAME_IDX ON EMP (UPPER(FIRST_NAME||' '||LAST_NAME))
该用例实现的功能是创建以大小写不敏感的firstna
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值