Cassandra分页查询

Cassandra分页

前言:

目前需要迁移一个老版本canssandra的数据,前期使用程序读取,读取时间一长就会断开,委曲求全的办法只能是一步一步分页读取,但是复杂度不敢恭维,这里记录一下使用token进行分页的经验.

正文

使用id作为主键进行分页

特点:

单个字段就可以索引唯一记录,分页只需token(id)即可

流程

  • 所有数据
select * from people;

在这里插入图片描述

  • 第一次查询:
select * from people limit 2;

在这里插入图片描述

  • 根据上一次的最后一个id进行token分页:
select * from people where token(id)>token(1) limit 2;

在这里插入图片描述

  • 根据上一次的最后一个id进行token分页:
select * from people where token(id)>token(4) limit 2;

在这里插入图片描述

这里发现限制为2但是数据不满,代表查询结束了

使用复合主键进行分页

特点

多个字段才能索引唯一记录,需要token(key 1)然后比较后续的主键字段进行进一步分页

流程

  • 所有测试数据如下:
select * from car;
select * from car where token(iccid)>token('aaa')  limit 3 ALLOW FILTERING;
select * from car where token(iccid)>token('bbb')  limit 2 ALLOW FILTERING;

在这里插入图片描述

  • 查询第一页
select * from car limit 2;

在这里插入图片描述

  • 根据上一次的最后一个id进行token分页:
select * from car where token(iccid)=token('aaa') and (ct)>('2020-06-22 17:30:44.000') limit 2 ALLOW FILTERING;

在这里插入图片描述

  • 根据上一次的最后一个id进行token分页:
select * from car where token(iccid)>token('aaa') limit 2 ALLOW FILTERING;

在这里插入图片描述

  • 根据上一次的最后一个id进行token分页:
select * from car where token(iccid)=token('bbb')and (ct)>'2021-05-22 17:30:49.000' limit 2 ALLOW FILTERING;

在这里插入图片描述

发现查询结果小于限制,查询完毕

注意事项

  • 在多主键查询时不能与id主键一样直接使用token(key1)>token(value)进行查询判断,否则会跳过所有key1:
select * from car where token(iccid)>token('aaa') limit 2 ALLOW FILTERING;

在这里插入图片描述

  • 此主键判断时可以都加(),如(ct)>(‘2021-05-22 17:30:49.000’),或者都不加,如ct>‘2021-05-22 17:30:49.000’
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读