Forum: Datenbanken
Delphi
by Gor1,
2. Sep 2011
Wie legt man eine Fremschlüsselbeziehung an? Kannst du mir das erklären oder hast du einen Link dazu?
In diesem Fall ist das keine 1:1-Verknüpfung, d.h. es kann sowohl in Tabelle1 als auch in Tabelle2 mehrere Datensätze mit dem gleichen Param1 geben (und die Datensätze in Tabelle1 dürfen nur dann gelöscht werden, wenn es keinen Datensatz in Tabelle2 mit diesem Param1 gibt).
Es ist auch...
Forum: Datenbanken
Delphi
by Gor1,
1. Sep 2011
Nochmal zur Klarstellung:
Param1 ist ein (Integer-)Feld sowohl in Tabelle1 als auch in Tabelle2. In Tabelle1 liegen Daten, die zu einem oder mehreren Datensätzen in Tabelle2 gehören und die Zuordnung erfolgt über Param1.
Es gibt jetzt eben Fälle, in denen Datensätze aus Tabelle2 gelöscht werden.
Danach sollen die Datensätze aus Tabelle1 herausgelöscht werden, die keinen zugeordneten Datensatz...
Forum: Datenbanken
Delphi
by Gor1,
31. Aug 2011
Ja, bin ich. Ich habe die Ausführungszeit für die verschiedenen Möglichkeiten auch mehrmals gemessen (in meinem Delphi-Programm). Da die Ausführung nur im Delphi-Programm so langsam ist (aber nicht in Flamerobin) vermute ich, dass das Problem irgendwo in Delphi bzw. den DBExpress-Treibern liegt und nicht in der Firebird-Datenbank. Momentan verwende ich Delphi 2009 mit dem dbxFirebird-Treiber....
Forum: Datenbanken
Delphi
by Gor1,
31. Aug 2011
Ich habe deinen Code mal in einer StoredProcedure ausprobiert, damit geht es deutlich schneller. Allerdings gibt es Fälle, in denen grosse Teile der Tabelle1 gelöscht werden und dabei ist diese Variante nicht so schnell (ich nehme an, weil für jede zu löschende Zeile ein DELETE aufgerufen wird).
Forum: Datenbanken
Delphi
by Gor1,
31. Aug 2011
Danke für diesen Tip. Ich denke, dass das auch das gewünschte Ergebnis liefern würde. Diese Variante ist auch schon mal doppelt so schnell wie meine ursprüngliche, allerdings halt immer noch deutlich langsamer als mit Flamerobin.
Forum: Datenbanken
Delphi
by Gor1,
31. Aug 2011
Hallo,
ich habe in meiner Firebird-Datenbank eine StoredProcedure, die für die Ausführung z.B. in FlameRobin knapp zwei Sekunden benötigt. Wenn ich diese StoredProcedure aber aus Delphi heraus über DBExpress aufrufe, dann benötigt das ExecSQL 16 Sekunden (wenn ich Firebird Embedded benutze sogar 27 Sekunden).
Ich habe auch versucht, das nicht mit einer StoredProcedure sondern direkt als...