连接表时如何在oracle中加快查询执行速度
How to speed up query execution in oracle when the tables are joined
这个问题我已经问过了,但是被系统关闭了。
我有代码,在我向其中添加了一个非常重要的部分之后,它位于一个页面上,其中大量数据需要 3-5 分钟才能加载很长时间。这是一个演示,其中通过 https://dbfiddle.uk/?rdbms=oracle_18&fiddle=892dcef2af2f606a7c31d15dfcba7314 突出显示的部分可以使用很长时间。是否可以优化代码使其不响应?我尝试了 tables 索引,但它没有用,我将感谢 help.The 这部分代码的整个问题
AND rep.id not in ( select o.id
from IOT_STREAM_ANALYTICS_LOG_REPRESENTATION o,
IOT_STREAM_ANALYTICS_LOG_REPRESENTATION parent
where o.parent = parent.parent
and parent.key = 'reader'
and parent.VALUE_STRING != txn.reader_value_string)
这段代码对应的事实是,当连接发生时,如果reader对我来说不合适table,我不想加入table。
我希望我根本没有子查询,结果就剩下了)
对于这种情况,很难在这里提出没有痕迹的东西(最好的选择)或执行计划。
看到这里,子查询可以改写成下面这样
select id
from IOT_STREAM_ANALYTICS_LOG_REPRESENTATION o,
IOT_STREAM_ANALYTICS_LOG_REPRESENTATION parent
where o.parent = parent.parent
and parent.key = 'reader'
and VALUE_STRING != txn.reader_value_string;
但我不确定使用同一列将 table 与其自身连接是否有意义。也许您想加入 o.parent 和 u.id?
... where o.parent in
(select u.id /* <-- */ from ...
正如我所说,如果这没有帮助,请向我们提供该查询的查询计划或跟踪
你不需要在这里使用第二个子查询:
select . . .
from . . .
where . . . and
not exists (select 1
from IOT_STREAM_ANALYTICS_LOG_REPRESENTATION o
where o.key = 'reader' and
u.VALUE_STRING <> txn.reader_value_string and
rep.id = o.id
);
这个问题我已经问过了,但是被系统关闭了。 我有代码,在我向其中添加了一个非常重要的部分之后,它位于一个页面上,其中大量数据需要 3-5 分钟才能加载很长时间。这是一个演示,其中通过 https://dbfiddle.uk/?rdbms=oracle_18&fiddle=892dcef2af2f606a7c31d15dfcba7314 突出显示的部分可以使用很长时间。是否可以优化代码使其不响应?我尝试了 tables 索引,但它没有用,我将感谢 help.The 这部分代码的整个问题
AND rep.id not in ( select o.id
from IOT_STREAM_ANALYTICS_LOG_REPRESENTATION o,
IOT_STREAM_ANALYTICS_LOG_REPRESENTATION parent
where o.parent = parent.parent
and parent.key = 'reader'
and parent.VALUE_STRING != txn.reader_value_string)
这段代码对应的事实是,当连接发生时,如果reader对我来说不合适table,我不想加入table。 我希望我根本没有子查询,结果就剩下了)
对于这种情况,很难在这里提出没有痕迹的东西(最好的选择)或执行计划。
看到这里,子查询可以改写成下面这样
select id
from IOT_STREAM_ANALYTICS_LOG_REPRESENTATION o,
IOT_STREAM_ANALYTICS_LOG_REPRESENTATION parent
where o.parent = parent.parent
and parent.key = 'reader'
and VALUE_STRING != txn.reader_value_string;
但我不确定使用同一列将 table 与其自身连接是否有意义。也许您想加入 o.parent 和 u.id?
... where o.parent in
(select u.id /* <-- */ from ...
正如我所说,如果这没有帮助,请向我们提供该查询的查询计划或跟踪
你不需要在这里使用第二个子查询:
select . . .
from . . .
where . . . and
not exists (select 1
from IOT_STREAM_ANALYTICS_LOG_REPRESENTATION o
where o.key = 'reader' and
u.VALUE_STRING <> txn.reader_value_string and
rep.id = o.id
);