1

Name1、Name2、およびタイムスタンプの2つの文字列で構成される複合主キーを使用しています(例:'Joe:Smith:123456')。Name1またはのいずれかの等式条件を指定して、タイムスタンプの範囲を照会したいと思いますName2

たとえば、SQLでは次のようになります。

SELECT * FROM testcf WHERE (timestamp > 111111 AND timestamp < 222222 and Name2 = 'Brown');

SELECT * FROM testcf WHERE (timestamp > 111111 AND timestamp < 222222 and Name1 = 'Charlie);

私の理解では、複合キーの最初の部分はパーティションキーであるため、2番目のクエリは可能ですが、最初のクエリではName2に何らかのインデックスが必要になります。

複合キーのコンポーネントに個別のインデックスを作成することは可能ですか?それとも私はここで何かを誤解していますか?

4

1 に答える 1

1

スキーマを使用して最初のクエリをサポートする場合は、名前のインデックスを手動で作成して維持する必要があります。この要件を考えると、私はデータモデルでのあなたの選択に疑問を投げかけます。モデルは、読み取りパターンを念頭に置いて設計する必要があります。タイムスタンプでクエリする列の値もいくつか保存していると思います。もしそうなら、おそらく次のモデルがあなたに役立つでしょう:

"[current_day]:Joe:Smith" {
    123456:Field1 : value
    123456:Field2 : value
    123450:Field1 : value
    123450:Field2 : value
}

このモデルを使用すると、現在の日(または既知の日)を番兵の値として使用し、名前と名前をフィルタリングできます。複合列名を使用して、タイムスタンプごとに列の範囲を取得することもできます。

于 2012-09-06T20:06:03.253 に答える