假设我有以下查询:
select * from A, B, C, D
where A.x = B.x
and B.y = C.y
and A.z = D.z
我有关于 Ax 和 Bx 以及 By 和 Cy 和 Dz 的索引
Az 上没有索引
如何给这个查询一个提示,在 Ax 上使用 INDEX 提示,但在 Az 上使用 USE_HASH 提示?似乎提示只采用表名,而不是特定的连接,因此当使用具有多个连接的单个表时,我只能为所有连接指定一个策略。
或者,假设我在上述查询中使用了 LEADING 或 ORDERED 提示。这两个提示也只需要一个表名,那么我怎样才能确保 Ax = Bx 连接发生在 Az = Dz 之前呢?我意识到在这种情况下我可以首先列出 D,但想象 D 随后连接到 E,并且 DE 连接是我在整个查询中想要的最后一个连接。
第三种配置——假设我希望 Ax 连接成为整个查询的第一个,并且我希望 Az 连接成为最后一个。如何使用提示从 A 进行单个联接,然后是 BC 联接,最后是 AD 联接?