Я использую пакет Oracle для одного из отчетов в нашем проекте.Когда к этому пакету обращаются одновременно, запрос ниже вызывает взаимоблокировку.Пожалуйста, предложите в любом случае улучшить этот запрос:
UPDATE temp_final t
SET notnullcol = ( select COALESCE(h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13,h14,h15,h16,h17,h18,h19,h20,h21,h22,h23,h23 )
from temp_final
where ( ( rowgroup = 'G' and mid = t.seid)
or ( rgroup = 'K' and t.rgroup = rgroup and t.mid = mid )
or ( rgroup = 'G' and t.rgroup = rgroup and t.mid = mid )
)
and rid = t.rid
and rtype = t.rtype
and sid = t.sid
and pid = t.pid AND rid = 9 AND rtype =1 AND sid = 'value' AND pid = 421 )
--5,034 rows updated.
Обратите внимание, что temp_final - это временная таблица, и все столбцы h * используются в вычислениях, поэтому схема этой таблицы не может быть использована.