我已经问过这个问题,但是系统已将其关闭。我有代码,在其中添加了非常重要的部分之后,它位于页面上,其中很多数据需要花费3-5分钟才能加载很长时间。这是一个演示,其中通过https://dbfiddle.uk/?rdbms=oracle_18&fiddle=7483d023f9b09cd75aeebe8e5f40a070突出显示的部分已经很长时间了。是否可以优化代码以使其不响应?我尝试了表索引,但是没有用,我将非常感谢您的帮助。这部分代码的整个问题
and rep.id not in ( select o.id
from IOT_STREAM_ANALYTICS_LOG_REPRESENTATION o
where o.parent in (select u.parent
from IOT_STREAM_ANALYTICS_LOG_REPRESENTATION u
where u.key = 'reader'
and u.VALUE_STRING != txn.reader_value_string ))
此代码与以下事实相对应:当发生连接时,如果阅读器不适合我,则我不想加入该表。
在这种情况下,很难建议一些没有跟踪(最佳选择)或执行计划的东西。
我在这里可以看到的所有子查询都可以按以下方式重写
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;
但是我不确定这是否会导致使用同一列将表与其自身连接。也许您想将o.parent与u.id一起加入?
... where o.parent in
(select u.id /* <-- */ from ...
正如我说的那样,如果没有帮助,请向我们提供查询计划或该查询的跟踪信息