oracle - 在 Oracle 中创建复合索引的推荐方法
问题描述
我有一个这样的 oracle 查询结构:
SELECT <SOME_COLUMNS>
FROM A a
JOIN B b ON a.A_ID = b.A_ID
JOIN C c ON b.B_ID = c.B_ID
忽略关于 WHERE 子句。
已经在 A_ID、B_ID 和 C_ID 上创建了单列索引(C_ID 未使用,但它是表 C 中的主键)。
从上述查询的这两种方法中创建其他索引的最佳方法是什么?
方法01
- 为 b.A_ID(外键)创建单个索引
- 为 c.B_ID(外键)创建单个索引
方法02
- 为 a.A_ID 和 b.A_ID 创建复合索引
- 为 b.B_ID 和 c.B_ID 创建复合索引
希望这对其他人也有帮助。
解决方案
您只能在单个表中创建复合索引。
所以正如你所提议的:
为 a.A_ID 和 b.A_ID
创建复合索引 为 b.B_ID 和 c.B_ID 创建复合索引
这是不可能的。
在您的情况下,列 a.A_ID、b.A_ID、c.A_ID 上的单列索引就可以了。
推荐阅读
- google-sheets-api - 使用 Google Sheets Chart API 控制底轴上的步数
- reactjs - GraphQL 突变和查询:无法读取未定义的属性
- php - 在多副本 Docker Swarm 或 Kubernetes 集群中刷新 PHP OpCache
- python - 熊猫按自定义日期范围分组日期
- python - 无法运行自定义操作。无法连接到“http://localhost:5055/webhook”的服务器
- oracle - 在 pl/sql 过程中处理 SharePoint URL 空间的正确方法
- css - 为什么生成的 pdf 不是 CSS 样式的?
- docker - 如何在 Docker 上使用 GD 库
- sql - 我的问题是关于 SQL 中 OR 运算符的工作,它可以用来组合两个选择查询吗
- java - 我已经安装了 jdk(11 lts) 但 (.java) 文件无法识别