phoenix 减少二级索引表的一种方式

二级索引表,在对原始表进行数据增加时,耗时增加。

没有建立二级索引表时,耗时:

1.7分钟

4.8分钟

 

建立了9个简单的二级索引表,耗时:

5.6分钟

43分钟

10分钟

 16.4分钟

从上面的实验结果,可以很明显看出耗时增加了好几倍。

 

但是页面存在多条件的查询,确实需要这些索引表。那我们是否有办法减少索引表数量呢?

 

T_EXTENSION_ALL_DATAS表的row key是:LOGIN_DATE 与 SEQ_ID

其中有这,3种查询条件:
date country camsite toy
date country camsite
date country

 

创建二级索引:

CREATE INDEX IDX_T_EXTENSION_ALL_DATAS_COUNTRY_SITE_TOY ON T_EXTENSION_ALL_DATAS(LOGIN_DATE,COUNTRY,CAM_SITE,TOY);

正常来说这3中查询条件,上面这索引就能够搞定了。但是如果需要排序呢?

 

如果存在使用seq_id排序,正序、倒序。那么这个索引就无法满足要求。(难道我们要由1个索引表,改成3个索引表???)
select seq_id from T_EXTENSION_ALL_DATAS where login_date='2018-11-24' and country='China' and cam_site='aaa' and toy='cat' and seq_id>0 order by seq_id desc limit 1;
select seq_id from T_EXTENSION_ALL_DATAS where login_date='2018-11-24' and country='China' and cam_site='aaa' and seq_id>0 order by seq_id desc limit 1;
select seq_id from T_EXTENSION_ALL_DATAS where login_date='2018-11-24' and country='China' and seq_id>0 order by seq_id desc limit 1;

 

其实我们可以删除上面创建的那张二级索引表,我们不用phoenix的二级索引表。(没看错,就是不用phoenix的二级索引表。)

 

比较适合,只有新增数据,没有修改数据的场景,而查询条件又很多的情况:

思路:

1、自定义二级索引表,插入主表数据的同时,同时插入相关数据进入自定义的二级索引表。

2、根据查询条件的情况,判断查询哪个自定义表。

3、自定义表会查出一个seq_id,或者uuid。

4、使用seq_id,去主表查出最终结果,因为主表的row key就是seq_id,所以呢很快。

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值