2017-09-01 3 views
1

私はCASSANDRAを初めて使用しているため、質問が単純すぎる可能性があります。CASSANDRAで特定の範囲にあるパラメータを検索する方法

refidとpartidの2つのコンポーネントで構成されるパーティション化キーを持つテーブルに対してクエリを実行しようとしています。私が遭遇する問題は、partidの数が大きくなることがあり(refidごとに異なることがある)ということです。私が今持っているクエリはのようなものです:

SELECT * FROM contigs WHERE refid=29179863 AND partid IN range(0,21); 

それを行う方法があります:私がやりたい何

SELECT * FROM contigs WHERE refid=29179863 AND partid IN (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21); 

はこのようにクエリを持っているのですか?私は最初にPythonでクエリ文字列の作成を避け、後でCassandraで実行したいと思っています...

答えて

1

selectの中のINのパーティションキーを使用すると、パフォーマンスの問題が発生する可能性があります。 キーをクラスタリングとしてパーティション・キーとしてrefidが、partidを指定し、partid

CREATE TABLE contigs ( 
    refid int, 
    partid int, 
     ... other fields... 
    PRIMARY KEY ((refid), partid) 
); 

クエリによってpartidレンジ範囲クエリを行うことができるようになります:

SELECT * FROM contigs WHERE refid=29179863 AND partid >= 0 AND partid < 21; 

しかし、通知を、カサンドラは2の制限がありますパーティションキーの中に数十億行があるので、この場合、refidには2億個を超えるpartidを持つことはできません。

関連する問題