首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Oracle索引

如何使用Oracle索引
EN

Stack Overflow用户
提问于 2010-09-23 09:30:08
回答 2查看 4.3K关注 0票数 2

我是一个PHP开发人员与Oracle经验很少谁的任务是与Oracle数据库的工作。

我注意到的第一件事是,这些表似乎没有像我在MySQL中看到的那样具有自动编号索引。相反,他们似乎是在两个字段之外创建一个索引。

例如,我注意到其中一个索引是日期字段和外键ID字段的组合。Date字段似乎存储了整个日期和时间戳,因此组合非常独特。

如果索引名是PLAYER_TABLE_IDX,我该如何在PHP代码中使用这个索引呢?

我想通过这个索引引用一个唯一的记录(而不是在我的SQL查询的WHERE部分使用两个AND子句)

对Oracle/PHP专家有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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)或外键,它们可以有重复项。但是因为键基于这两列,所以这两个值的组合使它们成为表中唯一记录的键。

票数 12
EN

Stack Overflow用户

发布于 2010-09-23 14:12:54

http://use-the-index-luke.com/是我的网络书籍,它解释了如何在Oracle中使用索引。

然而,如果你想了解事物是如何工作的,那么它可能值得一读。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3774812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档