行のバージョン管理を使用して、テーブルの主キーを設計したいと考えています。私のテーブルには、ID とタイムスタンプの 2 つの主要なフィールドと、その他のフィールドが含まれています。一意の「ID」については、以前のバージョンのレコードを保存したいと考えています。したがって、テーブルの主キーを ID フィールドとタイムスタンプ フィールドの組み合わせとして作成しています。したがって、特定の ID のすべてのバージョンを表示するには、次のように指定できます。
Select * from table_name where ID=<ID_value>
ID の最新バージョンを返すには、次を使用できます。
Select * from table_name where ID=<ID_value> ORDER BY timestamp desc
最初の要素を取得します。ここでの私の質問は、ID フィールドが主キー フィールドの一部であることを考慮して、テーブル全体をスキャンして同じ ID に一致するすべてのエントリを取得する代わりに、このクエリは効率的で O(1) で実行されるでしょうか? 理想的には O(1) で結果を取得するには、主キー全体を提供する必要がありました。テーブル全体のスキャンを実行する必要がある場合、このリクエストを O(1) で実行できるように主キーを設計するにはどうすればよいでしょうか?
ありがとう、スリラム