UPDATE t1
SET t1.language_id = (SELECT distinct(CASE WHEN NETWORK.nid = 11
THEN 10
ELSE 7
END)
FROM PROFILE,
NETWORK
WHERE PROFILE.STATUS IN ('A','U','S','H','I')
AND PROFILE.mid = t1.mid
AND NETWORK.mid = t1.mid
AND t1.is_deleted = 'N')
AND EXISTS(SELECT 1
FROM PROFILE,
NETWORK
WHERE PROFILE.STATUS IN ('A','U','S','H','I')
AND PROFILE.mid = t1.mid
AND NETWORK.mid = t1.mid
AND t1.is_deleted = 'N');
这是减速的方法。对使用语句使用不同的更新?做一个更新为10,一个更新为7.我该如何分解这个相关的sql-> oracle语句?
你为什么认为打破声明会提高性能?如果您遇到性能问题,那么查询计划是什么?哪些索引可用?我相信这与我之前在我的回答中发布类似查询的问题有关 - 在我的查询中,我有一个“WHERE EXISTS”。发布后,您的'AND EXISTS'无效,因为没有'WHERE'子句。每个表中有多少行?你正在更新多少行't1'?多久时间?你的绩效目标是什么? – 2013-03-19 19:22:53