以上面来看,如果数据量太大(百万以上),可以用两表做差会更快。 例:select * from ((select * from txdam) minus (select * from aktxdam)); 看返回结果集!
TO anke(killer) : 你的意思,阿明白;要是按你的说法的话,阿那句话就应该改成如下了: UPDATE TAB_1 SET CODE = '01' WHERE ID IN ( SELECT ID FROM TAB_1 INTERSECT SELECT ID FROM TAB_2 )不过,要是这样写的话,百万级的数据更新估计要等到花儿也谢了吧?应该说,这样的写法执行效率应该是最高的了: UPDATE TAB_1 A SET A.CODE = '01' WHERE EXISTS (SELECT 1 FROM TAB_2 B WHERE B.ID = A.ID)现在阿困惑的是在2表数据量的大小不同的情况下进行关联的时候,关联字段连接的先后次序对更新速度是否会有一定的影响??
UPDATE TAB_1 A SET A.CODE = '01' WHERE EXISTS(SELECT 1 FROM TAB_2 B WHERE B.ID = A.ID) 和 UPDATE TAB_1 A SET A.CODE = '01' WHERE EXISTS(SELECT 1 FROM TAB_2 B WHERE A.ID = B.ID) 对于oracle来说是一样的,oracle内部会做优化的. 你的SQL语句已经没有办法再优化了.考虑其他方法加速更新吧
gzing by the waySELECT department_id, job_id, manager_id, SUM(salary) FROM employees GROUP BY ROLLUP( department_id,(job_id, manager_id));这话什么意思啊?
例:select * from ((select * from txdam) minus (select * from aktxdam));
看返回结果集!
UPDATE TAB_1 SET CODE = '01'
WHERE ID IN ( SELECT ID FROM TAB_1 INTERSECT SELECT ID FROM TAB_2 )不过,要是这样写的话,百万级的数据更新估计要等到花儿也谢了吧?应该说,这样的写法执行效率应该是最高的了:
UPDATE TAB_1 A SET A.CODE = '01'
WHERE EXISTS
(SELECT 1 FROM TAB_2 B
WHERE B.ID = A.ID)现在阿困惑的是在2表数据量的大小不同的情况下进行关联的时候,关联字段连接的先后次序对更新速度是否会有一定的影响??
WHERE EXISTS(SELECT 1 FROM TAB_2 B WHERE B.ID = A.ID)
和
UPDATE TAB_1 A SET A.CODE = '01'
WHERE EXISTS(SELECT 1 FROM TAB_2 B WHERE A.ID = B.ID)
对于oracle来说是一样的,oracle内部会做优化的.
你的SQL语句已经没有办法再优化了.考虑其他方法加速更新吧
by the waySELECT department_id, job_id, manager_id,
SUM(salary)
FROM employees
GROUP BY ROLLUP( department_id,(job_id, manager_id));这话什么意思啊?