Einzelnen Beitrag anzeigen

jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#20

AW: 100.000 Datensätze in 22 Minuten - geht das noch schneller?

  Alt 20. Apr 2011, 07:31
Zitat:
by mkinzler
[Zitat]
Zitat:
by jobo
Wieso nicht eine Updateanweisung und eine Insertanweisung für alles? Oder geht so ein Update in Firebird nicht?
FireBird unterstützt sowohl MERGE wie update or insert
Hab ich mal wieder zu undeutlich ausgedrückt. Es geht mir nicht um den Unterschied zwischen einer Merge und einer Insert oder Update Anweisung. Es geht mir um das Verfahren in der SP aus dem Tutorial. Hier sind es nicht eine, sondern hundertausende solcher Anweisungen. Daher wundert mich die Angabe von 22 sec.

Wie gesagt, Insert hat bei mir unter 2 sec gedauert, update ca 0 sec, es gab ja keine. Merge habe ich nicht probiert.


Code:
for
    select ID, CATEGORY_ID, TITLE, ACTOR, PRICE, SPECIAL
    from IMPORT_PRODUCT
    into :ID, :CATEGORY_ID, :TITLE, :ACTOR, :PRICE, :SPECIAL
  do
  begin
    --is this record already there? 
    select count(*) from product where product.id=:id into :cnt;
    if (cnt=0) then
    begin
      --no, so do an insert
      insert into PRODUCT (ID, CATEGORY_ID, TITLE, ACTOR, PRICE, SPECIAL)
      values (:ID, :CATEGORY_ID, :TITLE, :ACTOR, :PRICE, :SPECIAL);
    end
    else
    begin
      --yes, so update the record
      update PRODUCT
      set CATEGORY_ID = :CATEGORY_ID,
          TITLE = :TITLE,
          ACTOR = :ACTOR,
          PRICE = :PRICE,
          SPECIAL = :SPECIAL
      where (ID = :ID);
    end
  end
  --thats all
Gruß, Jo
  Mit Zitat antworten Zitat