私はCassandraを使用してフルレンジのクエリを実行し、thisの記事に基づいてトークンの使用に関する不確実性を明確にする方法を理解しようとしています。Cassandra - WHERE句の範囲/トークンの照合
私は、次の表を持っていることを言うことができます:
CREATE TABLE space.rocket (
id timeuuid,
group text,
priority smallint,
date text, // Will hold YYYY-MM-DD
PRIMARY KEY ((group , date) , priority, id));
範囲where句を持っている最良のオプションは何ですか?例えば
:
私はこのように、グループ、日付と優先順位の範囲を実行することができます。
SELECT * FROM space.rocket
WHERE token(group, date) => token('group-name', '2017-17-09')
AND token(group, date) < token('group-name', '2017-17-10')
AND priority >= (0) AND priority <= (10) # or priority IN (0,1,2...10)
または私はこのように、トークンを使用する必要があります。
SELECT * FROM space.rocket
WHERE token(group, date, priority) => token('group-name', '2017-17-09', 0)
AND token(group, date, priority) < token('group-name', '2017-17-10', 11)
また、セカンダリインデックス(id)の範囲も含むクエリについては、次のようになります。
SELECT * FROM space.rocket
WHERE token(group, date, priority, id) => token('group-name', '2017-17-09', 0, timeuuidStart)
AND token(group, date, priority, id) < token('group-name', '2017-17-10', 11, timeuuidFinish)
または、グループのリストと日付の範囲を照会するにはどうすればよいですか?
、 感謝を教えてください!
もし私がByteOrderedPartitionerを使用していないなら、結果はどうですか? クエリは正しい順序で間違った正しい結果を返すでしょうか?パフォーマンスの影響がありますか?ありがとう! – eldad87
ByteOrderedPartitionerを使用しておらず、クエリの意味が少ない場合、2017-17-09と2017-17-10の間のデータは取得されません。日付範囲外の日付のトークンは日付の範囲トークンの内側にある可能性があります。 –