我想通过这个索引引用一个唯一的记录(而不是在我的 SQL 查询的 WHERE 部分中使用两个 AND 子句)
您必须使用复合主键中的所有列的引用来获得唯一的行,这是没有办法的。
您不能直接在 SQL 查询中使用索引。
在 Oracle 中,您使用提示语法来建议应该使用的索引,但希望使用索引的唯一方法是在 SELECT、JOIN、WHERE 和 ORDER BY 子句中指定与其关联的列。
我注意到的第一件事是,这些表似乎没有我习惯在 MySQL 中看到的自动编号索引。
Oracle(和 PostgreSQL)有所谓的“序列”。它们是与表分离的对象,但用于类似于 MySQL 的 auto_increment 的功能。与 MySQL 的 auto_increment 不同,每个表可以使用多个序列(它们从不关联),并且可以单独控制每个序列。
相反,他们似乎从两个字段中创建了一个索引。
这就是表的设计,没有什么特别是 Oracle 的。
但我认为是时候解决索引在数据库中的含义与您使用该术语的方式不同的问题了。索引是使从表中选择数据更快的附加步骤(但由于维护它们而使 INSERT/UPDATE/DELETE 变慢)。
您所说的实际上称为主键,在此示例中,它被称为复合键,因为它涉及多个列。在这种情况下,其中一列,无论是 DATE(考虑为 DATETIME)还是外键,都可以有重复项。但由于键基于两列,因此这两个值的组合使它们成为表中唯一记录的键。