AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi große anzahl von Records löschen
Thema durchsuchen
Ansicht
Themen-Optionen

große anzahl von Records löschen

Ein Thema von Mr.borland · begonnen am 10. Jul 2007 · letzter Beitrag vom 10. Jul 2007
Antwort Antwort
Seite 2 von 2     12   
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: große anzahl von Records löschen

  Alt 10. Jul 2007, 14:48
Zitat von RavenIV:
Bei Interbase / Firebird gibt es Execute-Stored-Procedures,die keine Ergebnismengen zurückgeben.
Diese sollten dann "nicht-blockierend" ausgeführt werden können.
Das kann man mit ADO realisieren (TADOCommand.ExecuteOptions := [eoAsyncExecute])

Allerdings würde ich erstmal die DB analysieren.

Wenn die mwTable sehr viele Einträge hat UND die spalte ID nicht indexiert ist, dann muss der Server ja alle Zeilen durchlaufen.
Wenn das also so ist (viele Zeilen, kein Index), dann dürfte ein Index auf der Spalte ID schon sehr viel bringen.

Wenn die Bedingung 'ID>=x AND ID <= y' (schreib lieber 'ID BETWEEN x AND y', ist hübscher) sehr viele Zeilen löscht, und hinterher verhältnismäßig wenig Zeilen übrig bleiben, dann könntest Du so vorgehen
SQL-Code:
select * into #TempTable -- Das ist MSSQL-Dialekt: Schreibe in eine temporäre Tabelle namens '#TempTable'
  from mwTable
 where not (ID between x and y) -- Also die Zeilen sichern, die NICHT gelöscht werden sollen
truncate table mwTable
insert into mwTable select * from #TempTable
drop table #TempTable
Wenn die Tabelle allerdings über AutoInc-Spalten verfügt, dann ist das so nicht machbar (man muss noch ein paar Zeilen dazupacken). Im Prinzip merkst du dir die Zeilen, die nicht gelöscht werden sollen, schmeißt die gesamte Tabelle auf den Müll (den Inhalt), und kopierst anschließend die gemerkten Zeilen zurück in die Originaltabelle. Das kann im Einzelfall schneller gehen.

Ich lese gerade, das vermutlich die 2.Variante für Dich in Frage kommt.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Mr.borland

Registriert seit: 16. Mai 2007
Ort: Plüderhausen
34 Beiträge
 
#12

Re: große anzahl von Records löschen

  Alt 10. Jul 2007, 15:00
Ja, für ein Thread brauche ich eine seperate Datenbank-Session.
ich kann allso über einen DB-Server zwei Sessions defieren die auf die selbe Tabelle zugreifen.
beim schreiben und löschen müßte ich nicht mal auf kollision achten.

zusätzlich brauche ich naturlich auch eine weitere Tabelle und eine Database.

liege ich richtig bis her?
  Mit Zitat antworten Zitat
Mr.borland

Registriert seit: 16. Mai 2007
Ort: Plüderhausen
34 Beiträge
 
#13

Re: große anzahl von Records löschen

  Alt 10. Jul 2007, 15:02
ich arbeite aber mit Nexus DB 2.0
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#14

Re: große anzahl von Records löschen

  Alt 10. Jul 2007, 15:05
Zitat von Mr.borland:
ich arbeite aber mit Nexus DB 2.0
Worauf bzw. auf wen bezieht sich das?
Zitat von Mr.borland:
Ja, für ein Thread brauche ich eine seperate Datenbank-Session...liege ich richtig bis her?
Yep. Wie greifst Du denn auf die DB zu? Ich sagte bereits, das man das mit ADO machen kann, ist bei Delphi mit dabei... Wenn Du per ADO-Connection eine Verbindung zum Nexus-dB-Server aufbauen kannst, dann klappt das.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Mr.borland

Registriert seit: 16. Mai 2007
Ort: Plüderhausen
34 Beiträge
 
#15

Re: große anzahl von Records löschen

  Alt 10. Jul 2007, 15:06
die tabelle hat einen AutoInc Spalte.
  Mit Zitat antworten Zitat
Mr.borland

Registriert seit: 16. Mai 2007
Ort: Plüderhausen
34 Beiträge
 
#16

Re: große anzahl von Records löschen

  Alt 10. Jul 2007, 15:07
mein frage über Threads bezieht sich auch
Bernhard Geyer schreiben

sorry!
  Mit Zitat antworten Zitat
Mr.borland

Registriert seit: 16. Mai 2007
Ort: Plüderhausen
34 Beiträge
 
#17

Re: große anzahl von Records löschen

  Alt 10. Jul 2007, 15:09
bezog sich auf Bernhard Geyer's schreiben. sorry
  Mit Zitat antworten Zitat
Mr.borland

Registriert seit: 16. Mai 2007
Ort: Plüderhausen
34 Beiträge
 
#18

Re: große anzahl von Records löschen

  Alt 10. Jul 2007, 15:11
alles klar, alzaimar. ich probiere das mal. danke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 08:29 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