gpt4 book ai didi

sql - 如何使用 Oracle 索引

转载 作者:行者123 更新时间:2023-12-02 05:45:46 25 4
gpt4 key购买 nike

我是一名 PHP 开发人员,几乎没有 Oracle 经验,我的任务是使用 Oracle 数据库。

我注意到的第一件事是,这些表似乎没有我在 MySQL 中经常看到的自动编号索引。相反,他们似乎从两个字段中创建了一个索引。

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

如果索引名称是 PLAYER_TABLE_IDX,我将如何在我的 PHP 代码中使用该索引?

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

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

最佳答案

I want to reference a unique record by this index (rather than using two AND clauses in the WHERE portion of my SQL query)

没有办法解决您必须使用引用复合主键中的所有列来获取唯一行的问题。

不能在 SQL 查询中直接使用索引。
在 Oracle 中,您使用 hint syntax建议应该使用的索引,但希望使用索引的唯一方法是在 SELECT、JOIN、WHERE 和 ORDER BY 子句中指定与其关联的列。

The first thing I have noticed is that the tables don't seem to have an auto number index as I am used to seeing in MySQL.

Oracle(和 PostgreSQL)有所谓的“序列”。它们是与表分开的对象,但用于类似于 MySQL 的 auto_increment 的功能。与 MySQL 的 auto_increment 不同,每个表可以使用多个序列(它们从不关联),并且可以单独控制每个序列。

Instead they seem to create an index out of two fields.

这就是表的设计,与 Oracle 无关。

但我认为是时候解决索引在数据库中的含义与您使用该术语的方式不同的问题了。索引是使从表中更快地选择数据的附加步骤(但由于维护它们而使 INSERT/UPDATE/DELETE 变慢)。

您所说的实际上称为主键,在本示例中将称为组合键,因为它涉及多个列。在这种情况下,其中一列,无论是 DATE(将其视为 DATETIME)还是外键,都可以有重复项。但由于键基于两列,因此是这两个值的组合使它们成为表中唯一记录的键。

关于sql - 如何使用 Oracle 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3774812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com