phoenix查询hbase ,想要走rowkey查询却成了走索引

在Phoenix中,通过SQL查询HBase时,使用`SELECT *`通常会走主键(rowkey)查询,但带有特定字段和`ORDER BY`的查询可能走索引。如果`ORDER BY`字段与主键和索引相同,Phoenix会默认使用索引。解决方法是确保查询字段与索引包含字段不完全一致,或者避免使用`ORDER BY`索引字段。

背景: 这是实际项目中遇到的实例,主要涉及到rowkey查询,索引查询 以及主键primary key。问题是在sql使用order by 查询 时遇到的,以下为个人浅见,仅供参考。

内容:

     Hbase中存在数据表如下:

CREATE TABLE IF NOT EXISTS Test.AppLog ( 
 UserId INTEGER NOT NULL,
 Number INTEGER NOT NULL,
 AcType INTEGER NOT NULL,
 Upserttime DATE NOT NULL,
 UploadCount INTEGER NULL,
 Token VARCHAR(50)  NULL,
 IsSuccess BOOLEAN NULL,
 Data VARCHAR NULL,
 ErrorMessage VARCHAR NULL,
 CONSTRAINT pk_TestAppLog
 PRIMARY KEY (UserId, Number, AcType, Upserttime)
 ) default_column_family='apl', SALT_BUCKETS=8;

建立表相应的索引

CREATE INDEX IF NOT EXISTS idx_TestAppLog_Upserttime ON Test.AppLog (Upserttime) 
INCLUDE (UserId, Number, AcType) SALT_BUCKETS=8;

针对上表,当我们使用select * 查询时,是走主键(rowkey)查询的。

eg:

explain select * from Test.AppLog
where userid = 10 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值