web-dev-qa-db-ja.com

レコードが存在するかどうかのCQLチェック

私はCassandraを学び、CQLとSQLの違いを学びつつありますが、Cassandraにレコードが存在するかどうかを確認する方法がないことに気づいています。現在、私が持っている最善の方法は使用することです

SELECT primary_keys FROM TABLE WHERE primary_keys = blah, 

結果セットが空かどうかを確認します。これを行うためのより良い方法はありますか、それとも今のところ正しい考えがありますか?

10
Jim Pedid

これは、Cassandraで行が存在するかどうかを確認する通常の方法です。行が存在するかどうかだけが気になる場合は、すべての主キーを返したくない場合があるため、これを行うことができます。 :

SELECT count(*) FROM TABLE WHERE primary_keys = blah, 

これは、行が存在する場合は1を返し、存在しない場合は0を返します。

10
Jim Meyer

countを使用すると、一致するすべての行をトラバースして、それらをカウントできるようになります。ただし、チェックする必要があるのは1つだけなので、制限して何でも返します。次に、結果の存在をtrueとして解釈し、不在をfalseとして解釈します。例えば。、

SELECT primary_keys FROM TABLE WHERE primary_keys = blah LIMIT 1
14
Nikita Volkov

主キーを使用して行をフィルタリングしている場合は、上記の3つのソリューション(自分のソリューションを含む)はすべて問題ありません。そして、私は本当の違いはないと思います。

ただし、一般的な方法(インデックス付きの列、パーティションキーなど)を使用して行をフィルタリングする場合は、「制限1」のソリューションを使用する必要があります。これにより、無駄なネットワークトラフィックが回避されます。

関連する例は次のとおりです。 ユーザー定義の集計によってCassandraでフィルタリングされた行の存在を確認する最良の方法は?

1
Ying LEE