gpt4 book ai didi

sql - Oracle 提示具有多个连接语句的多个索引

转载 作者:行者123 更新时间:2023-12-05 07:25:56 26 4
gpt4 key购买 nike

我有一个查询如下:

SELECT /*+ INDEX(A T1_IX01) INDEX(A T1_IX02) INDEX(B T2_IX01) INDEX(C T2_IX01)*/
*
FROM T1 A
JOIN T2 B
ON A.SOURCE = B.C1
JOIN T2 C
ON A.TARGET = C.C1;

我需要使用 T1 中的 2 个索引,我使用 SOURCE 列创建,另一个索引使用 TARGET 列创建,该列已将值映射到 T2 的 C1,后者也已编入索引。

在当前状态下,它只使用 T1 中的一个索引,该索引被声明为第一个提示,而不是后面的一个。 总而言之,我想使用在同一个表上创建的两个不同索引来进行两个单独的连接。

我为什么以及如何解决这个问题以获得更快的结果?

最佳答案

显然,我已经提示优化器使用散列连接而不是使用创建的索引,然后性能已经上升到相当高的水平。任何其他想法将不胜感激。

SELECT /*+ use_hash */
*
FROM T1 A
JOIN T2 B
ON A.SOURCE = B.C1
JOIN T2 C
ON A.TARGET = C.C1;

关于sql - Oracle 提示具有多个连接语句的多个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54625431/

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