6

次のような主キー定義を持つ列ファミリーがあります。

...
PRIMARY KEY ((website_id, item_id), user_id, date)

次のようなクエリを使用してクエリされます。

SELECT * FROM myCF
WHERE website_id = 30 AND item_id = 10
AND user_id = 0 AND date > 'some_date' ;

SELECT date FROM myCF ;ただし、最後に挿入された日付を返すなど、列ファミリを日付のみで並べ替えたいと思います。

クラスタリング列の順序により、得られるのは user_id ごと、次に日付ごとの順序です。主キーの定義を次のように変更すると:

PRIMARY KEY ((website_id, item_id), date, user_id)

日付を制限する必要があるのは user_id であるため、同じクエリを実行できなくなりました。

次のように言う方法があるかもしれないと思いました。

...
  PRIMARY KEY ((website_id, shop_id), store_id, date)
) WITH CLUSTERING ORDER BY (store_id RANDOMPLEASE, date DESC) ;

しかし、存在しないようです。最悪の場合、これは完全にばかげている可能性があり、その理由がわかりません。

これを達成する方法はありますか?何か不足していますか?

どうもありがとう!

4

3 に答える 3

1

プライマリ クエリに加えて、「最後に挿入された日付を返す」ことだけを取得しようとする場合は、追加のテーブルは必要ない場合があります。「静的列」を使用して、パーティションごとの最終更新時刻を保存できます。カサンドラ-6561

于 2014-12-06T20:52:38.687 に答える