Предположим, у меня есть таблицы перекодировки mylookup (lkid, lkname, ...)Как повысить производительность для оператора обновления?
Тогда у меня есть другие 2 таблицы:
mytab(id, parentid, name, lookname, ...)
yourtab(id, parentid, ...) --id, parentid coming from mytab
Тогда я попробовать обновление, чтобы получить lkid и его родителей lkid, sql like:
update yourtab set columnx =
case
when (select lkid from mylookup a join mytab b on a.lkname = b.lkname where b.id = c.parentid) > 3
and (select lkid from mylookup a join mytab b on a.lkname = b.lkname where b.id = c.parentid) >
(select lkid from mylookup where lkname = c.lkname)
then 1
else 0
end
from yourtab c
этот продукт не работает. (выберите lkid из mylookup, присоедините mytab b к a.lkname = b.lkname, где b.id = c.parentid) вызывается 2 раза для каждой строки в вашем тбайте.
как переписать sql для повышения производительности для этого случая?
Вы используете этот запрос в магазине прок? , если да, вы можете поместить его в переменную temp и использовать ее при условии. –
Как установить переменную temp? он отличается для каждой строки. – KentZhou