Phoneix中全局索引的非include字段问题

  在官方文档中,描述全局索引可以通过加hint,对select子句中的非include字段通过主键回查主表获得。

g.png

 
  表结构如下,粗体的是索引字段。

CREATE TABLE IF NOT EXISTS "TOPO_JOB"(
"TOPOID" varchar(20) not null primary key,
"TOPOJSON" varchar(102400),
"VALIDSTATUS" char(1),
"JOBSTATUS" char(1),
"INCREATED" boolean,
"INCREATEDDATE" date,
"CRON" varchar(32),
"EXCEPTIONSTACK" varchar(102400),
"RUNPERIOD" integer , 
"ERRORNODEID" varchar(20) ,
"TOPONAME" varchar(100),
"SERVER" varchar(19)

SALT_BUCKETS=5,COMPRESSION=lz4;

CREATE INDEX TOPO_JOB_INCREATEDDATE ON TOPO_JOB (INCREATEDDATE , JOBSTATUS);
 
 
执行查询:
explain
SELECT 
/*+ INDEX(TOPO_JOB TOPO_JOB_INCREATEDDATE) */ 
TOPONAME , SERVER
FROM TOPO_JOB
WHERE INCREATEDDATE = DATE'2018-07-14' AND JOBSTATUS = '1';
 
解释计划:

explain.png

 
可见依然使用了full scan。
 
请问该情况如何避免full scan?

***********************************************************************************************************
 
该问题已解决,是由于select hint语法问题,修改sql如下,注意hint中表名要加schema。

explain
SELECT 
/*+ INDEX(JOBSERVER_DEV.TOPO_JOB TOPO_JOB_INCREATEDDATE) */ 
topoid , INCREATEDDATE , VALIDSTATUS
FROM JOBSERVER_DEV.TOPO_JOB
WHERE INCREATEDDATE = DATE'2019-01-11'
 
解释计划如下:
 

搜狗截图20190212160229.png

 
已邀请:

要回复问题请先登录注册


中国HBase技术社区微信公众号:
hbasegroup

欢迎加入HBase生态+Spark社区钉钉大群