我在oracle中有一个表,其中的数据从某个第三方插入。我想从该表填充主表。那么,什么是使用集合的最佳性能表现方式。Oracle中的条件插入或更新
E.g.假设数据将从第三方填充到的表是'EMP_TMP'。
现在我想通过将从EMP_TMP表填充的过程填充'EMPLOYEE'主表。
这里又有一个条件,如IF SAME EMPID(这不是主键)EXISTS那么我们必须更新FULL TABLE,它包含相同的EMPID ELSE我们有INSERT NEW RECORD。
[注:这里EMPID是VARCHAR2和EMPNO将是主键,我们将使用SEQUENCE]
我觉得这里合并将不会执行好得多performancewise,因为我们不能在MERGE语句中使用集合。
你需要解释为什么合并是行不通的好一点。它专为这种upsert风格的场景设计。另一种方法是回到旧学校预先合并,这是2条语句,更新的内部连接和插入的左侧反连接。 – Andrew 2012-01-17 16:13:32
我知道合并会起作用。如果它的性能比BULK COLLECT更好,对我来说可以。这里的数据也将以十万卢比为单位。 – user1017936 2012-01-17 16:16:02
@ user1017936 - 与编写模拟相同操作的循环代码相比,单个SQL语句(无论是“INSERT”,“UPDATE”,“DELETE”还是“MERGE”)效率更高。使用'BULK COLLECT'可以使循环代码更高效,但不会比SQL更高效。 – 2012-01-17 16:24:31