thisのドキュメントによれば、私はtoken()関数を使用して選択クエリを試していましたが、Cassandra - token()関数を使用したクエリの選択
CREATE TABLE price_key_test (
objectid int,
createdOn bigint,
price int,
foo text,
PRIMARY KEY ((objectid, createdOn), price));
挿入されたデータ - - テーブル内の
insert into nasa.price_key_test (objectid,createdOn,price,foo) values (1,1000,100,'x');
insert into nasa.price_key_test (objectid,createdOn,price,foo) values (1,2000,200,'x');
insert into nasa.price_key_test (objectid,createdOn,price,foo) values (1,3000,300,'x');
データ -
私はカサンドラのバージョンの下に使用しています
[cqlsh 5.0.1 | Cassandra 2.2.5 | CQL spec 3.3.1 | Native protocol v4]
は、私は以下の表のためのトークンのクエリをしようとしていた
objectid | createdon | price | foo
----------+-----------+-------+-----
1 | 3000 | 300 | x
1 | 2000 | 200 | x
1 | 1000 | 100 | x
選択クエリがある -
select * from nasa.price_key_test where token(objectid,createdOn) > token(1,1000) and token(objectid,createdOn) < token(1,3000)
createdOn 2000で行を返すと仮定このクエリが、それはゼロ行を返します。
objectid | createdon | price | foo
----------+-----------+-------+-----
(0 rows)
私の理解によれば、トークン(OBJECTID、createdOn)>トークン(1,1000)とトークン(OBJECTID、createdOn)<トークン(1,3000)が値1 2000とパーティションキーを含む行を選択すべきです。
私の理解は正しいですか?
@Aronお返事ありがとうございます。つまり、token()関数ではリレーできません。選択したクエリでトークンを使用できる場合は、電話で連絡できますか? – Gunwant
@Gunwant 'token()'は大きなテーブル全体を照会するときに意味があります。通常、大きな結果セットのクエリはタイムアウトしますので、成功する可能性を高めるために、一度にトークン範囲をクエリできます。 – Aaron