gpt4 book ai didi

database - 复合主键的索引

转载 作者:搜寻专家 更新时间:2023-10-30 20:16:23 24 4
gpt4 key购买 nike

我在谷歌上搜索了很多次,但没有得到相同的确切解释。

我正在处理一个复杂的数据库结构(在 Oracle 10g 中),除了静态表之外,我几乎没有在一个列上使用主键。

现在我的问题是考虑复合主键 ID(LXI、VCODE、IVID、GHID)。由于是主键,Oracle 会提供默认索引。

我会为主键本身或其子列获得一个(系统生成的)单一索引吗?

之所以问这个问题,是因为我也在检索基于各个列的数据(大约数百万条记录)。现在,如果系统也为各个列生成索引。当我为每个单独的列显式定义索引时,为什么我的查询运行速度比实际运行速度快得多。

请给一个满意的答复

提前致谢

最佳答案

主键是一个非空的唯一键。在您的例子中,唯一索引有四列,LXI、VCODE、IVID GHID,按声明顺序排列。

如果您在 VCODE 上有条件但在 LXI 上没有条件,那么大多数数据库都不会使用该索引。 Oracle 有一种特殊类型的索引扫描,称为“跳过扫描”,它允许这种情况。在 documentation 中进行了描述.

我希望索引跳过扫描比对单个列的索引范围扫描慢一点。但是,哪个更好可能还取决于 where 子句的复杂性。例如,通过 AND 连接的 VCODEIVIDGHID 的三个相等条件可能是一个很好的例子跳过扫描。而且,这样的索引将覆盖 WHERE 子句——效率很高——并且比单列索引更好。

注意:索引跳过扫描是在 Oracle 9i 中引入的,因此它们在 Oracle 10 中可用。

关于database - 复合主键的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38066128/

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