Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Dataset.Next | sehr langsam (https://www.delphipraxis.net/199418-dataset-next-%7C-sehr-langsam.html)

Dekras12 22. Jan 2019 12:45

AW: Dataset.Next | sehr langsam
 
Ich habe es mir auch gedacht, aber das hat nicht geholfen.
Ich habe es mit rxdbgrid2.DataSource.DataSet.DisableControls deaktiviert. War etwas besser, aber nicht gut genug.
Früher hat es auch geklapt, aber das Programm wurde auf das neue Delphi konvertiert, wie ich es verstanden habe

Jumpy 22. Jan 2019 12:45

AW: Dataset.Next | sehr langsam
 
Ich würde auch per SQL die Ordnung aller betroffenen Datensätze (die größer (gleich) der Insert-Stelle) sind erhöhen. Dann den neuen Satz einfügen und dann ein refresh der Query.

Dekras12 22. Jan 2019 12:50

AW: Dataset.Next | sehr langsam
 
@Jumpy Ich probiere es mal aus
@mkinzler Was ist ein adäquater Index?

Delphi.Narium 22. Jan 2019 12:55

AW: Dataset.Next | sehr langsam
 
Gibt es einen Index auf die Spalte AufNr oder zumindest einen, der diese Spalte an erster Stelle enthält?

Ansonsten muss die Datenbank beim Scrollen per Fulltablescan jeweils den nächsten Satz, der die Bedingung erfüllt, suchen und das kann dauern.

mkinzler 22. Jan 2019 12:57

AW: Dataset.Next | sehr langsam
 
Zitat:

@mkinzler Was ist ein adäquater Index?
Am Besten einen über diese beide Spalten.

hoika 22. Jan 2019 13:04

AW: Dataset.Next | sehr langsam
 
Hallo,#
zumindestens das normale DBGrid war zwar sehr clever, wenn es sich im DBase/Paradox handelte,
aber bei Interbase/Firebird nicht ganz so.
Indizes waren extrem wichtig und zwar Indizes in beiden Richtungen
(Create Asc Index, Create Desc Index).
Das Asc kannst du auch weglassen.

Ansätze
1. Nimm eine leere Datenbank bzw. eine mit wenigen Datensätzen.
Ist das dort schnell, musst Du dir die SQL-Befehle ansehen,
die das DBGrid so wegschickt (DB-Monitor benutzen).

2. Bau doch mal testweise das gleiche mit einem TStringGrid oder einem normalen RXGrid nach
(dann natürlich nur mit Queries).

hoika 22. Jan 2019 13:12

AW: Dataset.Next | sehr langsam
 
Hallo,
Delphi-Quellcode:
daten.pos.First;
         while not daten.pos.eof do begin
Was konkret machst du hier?
Kann es sein, dass die date.pos deine 400K Tabelle ist und du versuchst,
das Feld Ordnung so zu setzen, dass der neue Tabelleneintrag zwischen 2 anderen liegt?

geg:
Record2000, Ordnung-2000
Record2001, Ordnung-2001

Ziel
Record2000, Ordnung-2000
Record_neu, Ordnung-2001
Record2001, Ordnung-2002

Dekras12 22. Jan 2019 13:17

AW: Dataset.Next | sehr langsam
 
@hoika Ja du hast es richtig verstanden.


[Edit] Es ist gut möglich, das die keinen Index haben. Ich kenne mich noch nicht mit Index aus, aber ich werde mich erstmal durchlesen. Vielen vilen Dank erstmal für die Hilfe und Vorschläge.

[Edit2] Jetzt verstehe ich das mit den Index, aufnr hatte schon bereits einen Index (Descending).

mkinzler 22. Jan 2019 13:42

AW: Dataset.Next | sehr langsam
 
Diese Updates würde ich auch per SQL durchführen:

SQL-Code:
update <Tabelle> set ordnung = ordnung +1 where ordnung > = :id;

hoika 22. Jan 2019 13:48

AW: Dataset.Next | sehr langsam
 
Hallo,
siehe mkinzler.
Id ist in meinem Beispiel Record2001, Ordnung-2001

Zuerst das Update, dann das Insert.
Probleme sind aber im Mehrbenutzerbetrieb zu erwarten.

Wenn kein Index angelegt ist, wird es für die DB bitter.
-> 100 mal Full Table Scan (wegen dem DBGrid), und das bei 400K Datensätzen.

Ein (Asc) Index beschleunigt das Suchen erheblich,
verlangsamt aber Insert/Update/Delete.
In der Regel kann man das aber vernachlässigen.

Wenn du ein Order By benutzt, wäre ein (Asc) Index auch schön.
Entscheidend ist aber der Index auf die Artikelnummer.

Create Index idx_TabName_FeldName On TabellenName(FeldName)
idx_TabName_FeldName ist ein Vorschlag, z.B. idx_Artikel_ArtNr


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:05 Uhr.
Seite 2 von 4     12 34      

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