【发布时间】:2013-10-21 15:14:21
【问题描述】:
我想像这样在 cassandra 中使用切片查询:
create table users (KEY varchar PRIMARY KEY, data varchar);
insert into users (KEY, 'data') values ('1', 'one');
insert into users (KEY, 'data') values ('2', 'two');
insert into users (KEY, 'data') values ('3', 'three');
insert into users (KEY, 'data') values ('4', 'four');
select * from users;
3 | three
2 | two
1 | one
4 | four
select * from users LIMIT 1;
3 | three
select * from users WHERE KEY > '3' LIMIT 1;
2 | two
select * from users WHERE KEY > '2' LIMIT 1;
1 | one
select * from users WHERE KEY > '1' LIMIT 1;
4 | four
在这个例子中,分区器是有序的。但我的分区器是无序的。所以我使用这样的查询:
select * from users WHERE token(KEY) > token('3') LIMIT 3;
如果我想访问所有行,我必须从具有最低哈希数的键开始查询。 有没有办法找到具有最低哈希数的密钥?如果没有,是否有更好的方法来分页表格行?
感谢您的帮助:)
编辑:
现在我有另一个问题。token 函数仅支持分区键。在我的 cf 中,主键复合为 (word,docid)。所以例如我有严重的 word=hi.and 当我使用像 select 这样的查询时* 来自用户 WHERE token(word) > token('hi') LIMIT 3;它从我的 cf 中的最后一个 hi 开始,这样一些 word=hi 的行被忽略了。
【问题讨论】: