我是一个PHP开发人员与Oracle经验很少谁的任务是与Oracle数据库的工作。
我注意到的第一件事是,这些表似乎没有像我在MySQL中看到的那样具有自动编号索引。相反,他们似乎是在两个字段之外创建一个索引。
例如,我注意到其中一个索引是日期字段和外键ID字段的组合。Date字段似乎存储了整个日期和时间戳,因此组合非常独特。
如果索引名是PLAYER_TABLE_IDX,我该如何在PHP代码中使用这个索引呢?
我想通过这个索引引用一个唯一的记录(而不是在我的SQL查询的WHERE部分使用两个AND子句)
对Oracle/PHP专家有什么建议吗?
发布于 2010-09-23 09:46:43
我想通过这个索引引用一个唯一的记录(而不是在我的SQL查询的WHERE部分使用两个AND子句)
您没有办法使用引用复合主键中的所有列来获得唯一的行。
不能在SQL查询中直接使用索引。
在Oracle中,您可以使用hint syntax来建议应该使用的索引,但希望使用索引的唯一方法是在SELECT、JOIN、WHERE和ORDER by子句中指定与其关联的列。
我注意到的第一件事是,这些表似乎没有我在MySQL中看到的自动编号索引。
Oracle (和PostgreSQL)有所谓的“序列”。它们是独立于表的对象,但用于类似于MySQL的auto_increment的功能。与MySQL的auto_increment不同,每个表可以使用多个序列(它们永远不会关联),并且可以单独控制每个序列。
相反,
似乎是从两个字段中创建一个索引。
这就是表的设计,并不是Oracle专门设计的。
但我认为是时候解决索引在数据库中的含义与您使用该术语的方式不同的问题了。索引是一个额外的步骤,用于使SELECTing数据更快地从表中读出(但由于维护这些数据而使插入/更新/删除变慢)。
您正在讨论的内容实际上称为主键,在本例中,它将被称为组合键,因为它涉及多个列。在这种情况下,其中一列可以是DATE (将其视为DATETIME)或外键,它们可以有重复项。但是因为键基于这两列,所以这两个值的组合使它们成为表中唯一记录的键。
发布于 2010-09-23 14:12:54
http://use-the-index-luke.com/是我的网络书籍,它解释了如何在Oracle中使用索引。
然而,如果你想了解事物是如何工作的,那么它可能值得一读。
https://stackoverflow.com/questions/3774812
复制相似问题