AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Was mache ich falsch? Firebird rattert wie irre auf der HDD
Thema durchsuchen
Ansicht
Themen-Optionen

Was mache ich falsch? Firebird rattert wie irre auf der HDD

Ein Thema von Gecko · begonnen am 9. Jun 2007 · letzter Beitrag vom 12. Jun 2007
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    
Gecko
(Gast)

n/a Beiträge
 
#11

Re: Was mache ich falsch? Firebird rattert wie irre auf der

  Alt 10. Jun 2007, 01:31
So Update:

Der Code schafft jetzt 8000 in 4 Sekunden...ich denk viel besser wirds nicht gehn.

Delphi-Quellcode:
zconnection1.StartTransaction;
qrsecond.SQL.Text:='INSERT INTO SPAM (WORD) VALUES (:WORD)';

for I := 0 to sl.Count-1 do begin

qrsecond.ParamByName('WORD').AsString:=sl.Strings[i];
qrsecond.ExecSQL;

end;

zconnection1.Commit;
Allerdings muss ich vorher bei jedem Eintrag ja noch nen Select machen um zu schaun ob der Eintrag schon drin ist und dann nen Update um den Zähler um eins zu erhöhen,
wie oft das Word schon vorgekommen ist. Falls er nicht drin ist eben den Insert hier.

Hm gibts da irgenden Weg um das halbwegs effizient zu lösen?
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Was mache ich falsch? Firebird rattert wie irre auf der

  Alt 10. Jun 2007, 02:54
Hallo Gecko,

mach dein WORD zum PrimaryKey und bau um dein ExecSQL ein Try-Except.

Wenn die Zahl nicht da ist wird sie hinzugefügt, wenn sie schon da ist wird eine Exception ausgelöst und dann kannst du dein UPDATE machen.

Das sollte wesentlich schneller gehen.

Gruss
Thorsten
  Mit Zitat antworten Zitat
alex517
Online

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#13

Re: Was mache ich falsch? Firebird rattert wie irre auf der

  Alt 10. Jun 2007, 09:37
Hallo Gecko,

Lass doch die Arbeit Firebird machen, dazu hast du ihn (den Vogel ) doch.
Für deinen Fall dürfte diese SP reichen.
Es wird nachgesehen ob der Begriff schon vorhanden ist und entsprechend reagiert.
Wichtig ist ein Index auf das Feld "BEGRIFF" für den indizierten Zugriff.

SQL-Code:
CREATE PROCEDURE SP_SPAM_IU (
    BEGRIFF VARCHAR(30))
RETURNS (
    ANZAHL INTEGER)
AS
DECLARE VARIABLE ID INTEGER;
BEGIN
  BEGRIFF = UPPER(BEGRIFF);
  SELECT ID, ANZAHL FROM SPAM WHERE (BEGRIFF = :BEGRIFF) INTO :ID, :ANZAHL;
  IF (ID is not NULL) THEN
  BEGIN
    UPDATE SPAM SET ANZAHL = :ANZAHL +1
    WHERE (ID = :ID);
  END ELSE
  BEGIN
    INSERT INTO SPAM (
        BEGRIFF,
        ANZAHL)
    VALUES (
        :BEGRIFF,
        1);
    ANZAHL = 1;
  END
  SUSPEND;
END
alex
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#14

Re: Was mache ich falsch? Firebird rattert wie irre auf der

  Alt 10. Jun 2007, 10:56
warum nicht einfach:
INSERT INTO TABLE SET id = 1, Test = 'TestON DUPLICATE KEY UPDATE Test = 'Test'
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Gecko
(Gast)

n/a Beiträge
 
#15

Re: Was mache ich falsch? Firebird rattert wie irre auf der

  Alt 10. Jun 2007, 15:39
Zitat von gsh:
warum nicht einfach:
INSERT INTO TABLE SET id = 1, Test = 'TestON DUPLICATE KEY UPDATE Test = 'Test'
Mich beschleicht das Gefühl, das es ON DUPLICATE KEY in Firebird garnicht gibt ??
Es funktioniert nämlich nicht und bei google gibts nicht nen einzigen eintrag dazu

Was kann man anstattdessen verwenden?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#16

Re: Was mache ich falsch? Firebird rattert wie irre auf der

  Alt 10. Jun 2007, 21:05
Hallo,

der Code On Duplicate klappt erst ab FB2.x.

8000 Einträge in 4 sec sind doch nicht schlecht...
Ist auf Word überhaupt ein Index drauf ?


Heiko
Heiko
  Mit Zitat antworten Zitat
Gecko
(Gast)

n/a Beiträge
 
#17

Re: Was mache ich falsch? Firebird rattert wie irre auf der

  Alt 10. Jun 2007, 21:40
Zitat von hoika:
der Code On Duplicate klappt erst ab FB2.x.
Ich hab aber Firebird 2.x, klappen tuts trotzdem nicht
Invalid Token: ON
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: Was mache ich falsch? Firebird rattert wie irre auf der

  Alt 10. Jun 2007, 21:41
Mit 2.x ist >= 2.1 gemeint
Markus Kinzler
  Mit Zitat antworten Zitat
Gecko
(Gast)

n/a Beiträge
 
#19

Re: Was mache ich falsch? Firebird rattert wie irre auf der

  Alt 10. Jun 2007, 21:43
Zitat von mkinzler:
Mit 2.x ist >= 2.1 gemeint
Ist die im Alpha Stadium? Auf der HP gibts nämlich nur 2.01
Hm was mach ich da? Den Workaround von alex517 nehmen oder kann man diese Alpha bereits stabil nutzen? (vlt hats ja jemand getestet)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: Was mache ich falsch? Firebird rattert wie irre auf der

  Alt 10. Jun 2007, 21:47
Zitat:
Ist die im Alpha Stadium?
Ja
Zitat:
Auf der HP gibts nämlich nur 2.01
http://www.ibphoenix.com/main.nfs?a=...bp_download_21
Zitat:
Hm was mach ich da? Den Workaround von alex517 nehmen?
Kommt auf den Zeitrahmen, des Einsatzes deines Programmes an. Meiner Erfahrung nach ist die 2.1 recht stabil
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz