AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Geschwindigkeitsoptimierung.
Thema durchsuchen
Ansicht
Themen-Optionen

Geschwindigkeitsoptimierung.

Ein Thema von mojo777 · begonnen am 16. Mai 2004 · letzter Beitrag vom 16. Mai 2004
Antwort Antwort
Seite 1 von 2  1 2      
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#1

Geschwindigkeitsoptimierung.

  Alt 16. Mai 2004, 01:16
Hallo,

ich stehe heute vor einem ernst zu nehmenden problem mit der Geschwindigkeit meiner Anwendung.
UNd zwar geht es um Datenbankabfragen.
Ich habe eine Tabelle mit recht vielen daten (also 1000-5000). Und die tabelle soll jetzt nach einem wert durchsucht werden. Dies soll möglichst schnell gehen. Ich kenne da schon 3 möglichkeiten. und bei 2 bin ich mir mit der geschwindigkeit nicht sicher... beide laufen irgendwie gleich langsam, obwohl ich von unterscheidlichen quellen gehört habe, dass es eigentlich schneller klappen sollte. ok. zu den fällen:

1.
Delphi-Quellcode:
for i:=1 to dmData.ibTable.RecordCount do
begin
bonsai;
dmData.ibTable.NExt; //geht also alle datensätze durch, bis der gesuchte wert gefunden wurde....
end;
2. dmData.ibTable.Locate('ARTNR', ed_artnr.Text, [loCaseinsensitive]); 3. SELECT * FROM table WHERE ARTNR='+ed_arntnr.Text wie ihr seht, kann man die 1. methode gleich vergessen.

wie bastle ich diese funktion am schnellsten? bei mir ist es so, dass man ca 0,5 sekungen warten muss bis ein wert von 3000 anderen gefunden wurde... das ist sehr lahm...!!!!

wäre sehr dankbar für anregungen...
Muh macht die kUh
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#2

Re: Geschwindigkeitsoptimierung.

  Alt 16. Mai 2004, 01:40
Hi,

wenn du z.B. nach der Artikelnummer suchst solltest du deine Tabellen so aufbauen, dass die Artikelnummern einmalig und indiziert sind.

Dann sollte ein Zugriff auch mittels locate ok sein.
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#3

Re: Geschwindigkeitsoptimierung.

  Alt 16. Mai 2004, 01:42
hallo mo...,

hast du die tablle indiziert?
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#4

Re: Geschwindigkeitsoptimierung.

  Alt 16. Mai 2004, 12:25
jetzt hab ich sie indiziert....

ist jetzt etwas schneller... ist aber immer noch nicht sooo doll... naja... der code ist auch etwas komplizierter.. ich werd mal gucken wo ich noch indizierung vergessen hab.

wie kann ich die bearbeitungsdauer feststellen?
dass ich z.b. nach einem click angezeigt bekomme, wie lange die operation gebraucht hat.
Muh macht die kUh
  Mit Zitat antworten Zitat
16. Mai 2004, 12:38
Dieses Thema wurde von "Luckie" von "VCL-Komponenten und Controls" nach "Datenbanken" verschoben.
Du sagst selbst, dass es eine Datenbankfrage sei...
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Geschwindigkeitsoptimierung.

  Alt 16. Mai 2004, 12:43
Zitat von mojo777:
jetzt hab ich sie indiziert....

ist jetzt etwas schneller... ist aber immer noch nicht sooo doll... naja... der code ist auch etwas komplizierter.. ich werd mal gucken wo ich noch indizierung vergessen hab.

wie kann ich die bearbeitungsdauer feststellen?
dass ich z.b. nach einem click angezeigt bekomme, wie lange die operation gebraucht hat.
Hi,

Hier im Forum suchenGetTickCount sollte da behilflich sein.

Delphi-Quellcode:
var
  A, B: Cardinal;
begin
  A := GetTickCount;
  // tue etwas
  B := GetTickCount - A;
  ShowMessage(IntToStr(B));
end;
mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#7

Re: Geschwindigkeitsoptimierung.

  Alt 16. Mai 2004, 12:49
yeah danke mahn!
Muh macht die kUh
  Mit Zitat antworten Zitat
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#8

Re: Geschwindigkeitsoptimierung.

  Alt 16. Mai 2004, 12:54
noch eine frage zur indizierung..... wie mach ich das???????
immer wenn ich die felder unter IndexDefs eingebe, verschwinden sie wieder gleich...
muss ich es etwa über interbase machen?

danke.
Muh macht die kUh
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: Geschwindigkeitsoptimierung.

  Alt 16. Mai 2004, 12:55
Moin
SELECT * FROM table WHERE ARTNR='+ed_arntnr.Text Das tut weh!

Du änderst jedesmal den Wortlaut des Statements, der Server kann es deshalb nicht mehr zu einem früheren Aufruf zuordnen.
Er muss also den Code neu parsen, die Berechtigungen prüfen, einen Query Plan erstellen, die Werte holen.

Machst du es so wie im Schnipsel unten wirst du etwas feststellen:
  • Die Abfrage läuft beim ersten Mal nur minimal schneller als dein Schnipsel, aber beim 2. Aufrufen braucht sie massiv weniger Zeit (abhängig von der verwendeten DB und ihrem Cache-Verfahren)
  • und das gilt für alle Anmeldungen, die diese Abfrage ausführen (bei einem anderen User werden nur einmal die Berechtigungen geprüft)

Delphi-Quellcode:
With ADOQuery Do
Begin
  SQL.Text :=
    'SELECT *' + #10 +
    'FROM Table' + #10 +
    'WHERE ARTNR = :i_Ed_ArntNr';
  // Parsen des Statements um Query Parameter zu finden...
  Prepared := True;
  // Werte an Query Parameter übergeben...
  Parameters.ParamByName('i_Ed_ArntNr').Value := Ed_ArntNr.Text;
  Open;
  // Laufe durch die Ergebnisse bis zum letzten Eintrag (Eof)...
  While not Eof Do
  Begin
    //Was immer du hier machen willst...
    //mit "Next" springst du zum nächsten Eintrag...
    Next;
  End;
  //...
End;
  Mit Zitat antworten Zitat
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#10

Re: Geschwindigkeitsoptimierung.

  Alt 16. Mai 2004, 12:57
bestätigung.... das geht über interbase...
die dauer beträgt aber dennoch ca 800 ms...... (p4 2,8ghz!)
das ist gar nicht guttah!
Muh macht die kUh
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:11 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