Konu: Sql Insert hızlandırmak
Merhabalar!
Bu yöntemi biliyordum, ama bu kadar fark edeceğini bilmiyordum. Bu nedenle paylaşayım dedim:
Eski bir programımın veritabanını Vfp'dan Postgresql'e geçiriyorum.
Vfp'dan bir import yaparken, 75.000 satırlık bir tabloda (8 sütün) epey beklemek zorunda kaldım. Merak ettim ve süreyi ölçtüm: 252 saniye.
Bildiğimiz klasik yöntemle çalıyordum:
Scan
Insert Into Table (field1, field2, field3) Values (?H.f1, ?H.f2. ?H.f3)
Endscan
Birkaç kes 4 dak. ve 12 saniye beklemek zorunda kaldıkdan sonra, ister istemz yöntemi değiştirmek zorunda kaldım. Sonuç: süreyi 1:43 saniye düşürebildim. Yani %60 bir kazan elde edebildim.
cSql = "Insert into Table (field1, field2, field3) Values "
Scan
cSatir = "("
cSatir = cSatir + Alltrim(str(H.f1)) + ","
cSatir = cSatir + Alltrim(str(H.f2)) + ","
cSatir = cSatir + Alltrim(str(H.f3)) + "),"
cSql = cSql + cSatir
Endscan
nLng = LEN(cSQL)
cSQL = LEFT(cSQL, nLng -1) + ";"
nAntw = SQLEXEC(nSQL, cSQL)
IF nAntw != 1
AERROR(ErrorArray)
MESSAGEBOX(ErrorArray(2))
RETURN FALSE
ENDIF