私はCQLの周りに私の脳を包むいくつかの問題を抱えています。私はCQL3で列スライス(これが正しい用語だと思います)を操作しようと試みてきましたが、それに関するすべてのドキュメントはCQL2を参照しているようです。
たとえば、次の表があります。
CREATE TABLE eventindex (
key uuid,
column1 int,
value uuid,
PRIMARY KEY (key, column1)
) WITH COMPACT STORAGE
これで、CQL2で次のことができます。
select '1234567890'..'1234567895' from eventindex;
これは、すべての行の範囲内のすべての列を返します
さて、CQL3では(少なくともcqlshでは)それを行うことはできませんが、次のことはできます。
select value from eventindex WHERE column1 > 1234567890 AND column1 <= 1234567895 allow filtering;
これにより、基本的に同じ情報が得られますが、形式が少し異なります。
問題は-これらは同等ですか?許可フィルタリングを追加しない場合にcqlshがパフォーマンスの問題について警告するという事実は、CQL2バージョンの方が効率的であり、CQL3クエリの動作が異なることを示していますが、確認する正解を見つけることができませんでした。ここに私の直感。
編集:私が懸念している具体的なことは、CQL2クエリを実行してもcqlshからの苦情は発生しませんが、 「フィルタリングを許可」せずにCQL3クエリを実行すると、予測できないパフォーマンスが懸念されるため、cqlshはクエリの実行を拒否します。