У меня есть запрос, но он работал очень долго, я добавил индексы. Можем ли мы изменить его так, чтобы не было подзапросов, а были только соединения ??? Буду признателен за помощь
SELECT rep.id,
rep.VALUE_NUMBER,
txn.reader_value_string VALUE_STRING
FROM IOT_STREAM_ANALYTICS_LOG_REPRESENTATION rep
LEFT join txn
ON rep.VALUE_NUMBER = txn.transaction_value_number
--This part of the code is very late in compiling --
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)
----------------------------------------------------------------------------------------------
WHERE lower(rep.key) = 'transaction'
AND rep.value_number <> 0
group by rep.id,
rep.value_number,
txn.reader_value_string
Это демонстрационная версия https://dbfiddle.uk/?rdbms=oracle_18&fiddle=892dcef2af2f606a7c31d15dfcba7314 без этих подзапросов)
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