В Cassandra, как выбрать строки по нескольким фильтрам?

У меня есть таблица, как показано ниже: CREATE TABLE test (a int; b int; c int; d int; PRIMARY KEY ());

Я хочу выбрать данные с 0 ‹ a ‹ 10 и 0 ‹ b ‹ 10, как установить ПЕРВИЧНЫЙ КЛЮЧ и как запустить CQL-запрос?

Спасибо!


person user2407014    schedule 28.10.2014    source источник


Ответы (1)


Использование операторов диапазона (‹ >) в ключе разделения не допускается, если вы не используете ByteOrderedPartitioner, который имеет несколько недостатков, связанных с производительностью.

В противном случае с Murmur3Partitioner по умолчанию у вас есть два варианта. Первое решение:

create table test (
    a int,
    b int,
    c int,
    d int,
    primary key ((a,b))
);

Тогда для X в 1..10

select * from test where a = X and b in (1,2,3,4,5,6,7,8,9,10)

Второе решение:

create table test (
    a int,
    b int,
    c int,
    d int,
    primary key (a,b)
);

Затем

select * from test where a in (1,2,3,4,5,6,7,8,9,10) and b >=1 and b <= 10 ;
person G Quintana    schedule 29.10.2014
comment
Спасибо за ваше предложение, однако, что, если я хочу выбрать данные с 0 ‹ a ‹ 10000 и 0 ‹ b ‹ 10000? - person user2407014; 29.10.2014