1. Lebih lama karena ada proses searching (where field1 = data1) pada statment 
pertama, sedangkan
yang kedua hanya insert saja. jadi masuk akal apabila lebih lama 2x lipat, 
terlebih apabila datanya cukup besar
dan melakukan pencarian pada banyak partisi. dapat lebih di optimasi dengan 
menggunakan query yang lebih efisien, dan memperkecil LIO(Logical IO)

2. Untuk 9i dan 10g ada fasilitas baru disebut merge untuk menfasilitasi proses 
upsert.

MERGE INTO newemp n1 --Source table yang ingin di upsert
USING external_table e1 --Target table sebagai perbandingan
ON ( n1.empno = e1.empno ) --Perbandingannya
WHEN MATCHED THEN UPDATE --Kalau ketemu maka di update
    SET n1.empno    = e1.empno,
        n1.ename    = e1.ename,
        n1.job      = e1.job,    
        n1.mgr      = e1.mgr,
        n1.hiredate = e1.hiredate,
        n1.sal      = e1.sal,
        n1.comm     = e1.comm,
        n1.deptno   = e1.deptno
WHEN NOT MATCHED THEN  -- Kalau tidak ketemu makan di insert kan
INSERT ( empno, ename, job, mgr, hiredate, sal, comm, deptno )
values ( e1.empno,
         e1.ename,
         e1.job,    
         e1.mgr,
         e1.hiredate,
         e1.sal,
         e1.comm,
         e1.deptno )
/

OBL

*********** REPLY SEPARATOR  ***********

On 13/01/2005 at 9:04 AM SIMASDAM wrote:

Dear netters...

 

Saya mau updating table dengan cara

 

UPDATE table

SET field2 = data2, field3 = data3

WHERE field1 = data1;

IF SQL%NOTFOUND THEN

      INSERT INTO table

      (field1,field2,field3)

      VALUES

      (data1,data2,data3);

END IF;

 

Namun performance-nya (dalam hal ini waktu yang dibutuhkan, berdasarkan
pengamatan kasar melalui penunjuk waktu) lebih lama (hampir 2 x
lipat)dibanding langsung insert data.

 

INSERT INTO table

(field1,field2,field3)

VALUES

(data1,data2,data3);

 1

Pertanyaan saya 

1.      mengapa perbedaan waktunya sangat signifikan.
2.      apakah ada cara lain yang bisa saya lakukan untuk update
sekaligus insert kalau datanya tidak ditemukan.

Mohon maaf kalau pertanyaannya sudah pernah ada.

Terima kasih atas jawabannya.






--
-----------I.N.D.O - O.R.A.C.L.E---------------
Keluar: [EMAIL PROTECTED]
Website: http://indo-oracle.blogspot.com
-----------------------------------------------

Bergabung dengan Indonesia Thin Client User Groups, 
Terminal Server, Citrix, New Moon Caneveral, di:
http://indo-thin.vze.com 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/indo-oracle/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 



Kirim email ke