このインデックスで一意のレコードを参照したい (SQL クエリの WHERE 部分で 2 つの AND 句を使用するのではなく)
一意の行を取得するために複合主キーのすべての列を参照する必要があることを回避する方法はありません。
SQL クエリでインデックスを直接使用することはできません。
Oracle では、ヒント構文を使用して、使用する必要があるインデックスを提案しますが、インデックスの使用を希望する唯一の手段は、SELECT、JOIN、WHERE、および ORDER BY 句で関連付けられた列を指定することです。
最初に気付いたのは、MySQL で見慣れているように、テーブルに自動番号インデックスがないように見えることです。
Oracle (および PostgreSQL) には、「シーケンス」と呼ばれるものがあります。これらはテーブルとは別のオブジェクトですが、MySQL の auto_increment と同様の機能に使用されます。MySQL の auto_increment とは異なり、テーブルごとに複数のシーケンスを使用でき (関連付けられることはありません)、それぞれを個別に制御できます。
代わりに、2 つのフィールドからインデックスを作成しているようです。
それがテーブルの設計であり、それについて特にOracleは何もありません。
しかし、データベース内でのインデックスの意味は、用語の使用方法とは異なることに対処する時が来たと思います。インデックスは、テーブルからのデータの選択を高速化するための追加のステップです (ただし、それらを維持するために INSERT/UPDATE/DELETE が遅くなります)。
あなたが話していることは、実際には主キーと呼ばれます。この例では、複数の列が含まれるため、複合キーと呼ばれます。この場合、列の 1 つである DATE (DATETIME と考えてください) または外部キーが重複している可能性があります。ただし、キーは両方の列に基づいているため、2 つの値の組み合わせがテーブル内の一意のレコードへのキーになります。