Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi BETWEEN schneller machen? (https://www.delphipraxis.net/129558-between-schneller-machen.html)

ryLIX 21. Feb 2009 08:02

Datenbank: SQLite • Version: 3 • Zugriff über: DISQLite3

BETWEEN schneller machen?
 
Moin,

ich hab hier ein SELECT stmt welches eindeutig zu langsam ist (bei 800MHZ 1249ms).
Derzeit benutze ich in diesem stmt BETWEEN um meine Daten zu bekommen.
Das Ergebnis ist zwar wie gewünscht aber es dauert zu lang.

SQL-Code:
SELECT fgstnr_prod, fgstnr_mospid, fgstnr_typschl FROM vin_fgstnr WHERE "EH03029" BETWEEN fgstnr_von AND fgstnr_bis
Ich hab hier mal einen Schlüssel eingefügt um zu verdeutlichen wie die aussehen ;)

Zur Tabelle:
Im stmt sind schon fast alle Spalten drin.
Eine gibts noch die ich derzeit nicht verwende: fgstnr_anf
Die enthält die ersten beiden zeichen des Schlüssels.
Die Tabelle enthält um 1.5 mio Datensätze.

Nun suche ich nach einer Möglichkeit die Daten schneller zu filtern.

Wenn ich nur nach fgstnr_anf Frage bekomme ich um 1000 Datensätze.
Wäre es besser das Query darüber aufzubauen und dann mit Delphi die Daten zu Filtern?
Wenn ja wie finde ich den passenden Datensatz? Da es sich bei den Schlüsseln immer um einen Bereich handelt.

Gibt es noch andere alternativen?

mkinzler 21. Feb 2009 08:08

Re: BETWEEN schneller machen?
 
Was für Indizes existieren?

ryLIX 21. Feb 2009 08:21

Re: BETWEEN schneller machen?
 
Derzeit keine.
Gibt auch keine Unique Felder.

mkinzler 21. Feb 2009 08:22

Re: BETWEEN schneller machen?
 
Indizes sind aber das Instrument der Wahl um Abfragen zu optimieren.

khh 21. Feb 2009 08:33

Re: BETWEEN schneller machen?
 
Zitat:

Zitat von ryLIX
Derzeit keine.
Gibt auch keine Unique Felder.

ein index auf die relevanten felder beschleunigt den Zugriff um das x-fache


Gruss KH

ryLIX 21. Feb 2009 08:41

Re: BETWEEN schneller machen?
 
Der Index sollte dann für _von und _bis sein oder?
Muss ich an der Abfrage noch etwas verändern?

omata 21. Feb 2009 14:59

Re: BETWEEN schneller machen?
 
Zitat:

Zitat von ryLIX
Muss ich an der Abfrage noch etwas verändern?

Nein, die ist doch schon minimalistisch.

mkinzler 21. Feb 2009 16:55

Re: BETWEEN schneller machen?
 
Zitat:

Der Index sollte dann für _von und _bis sein oder?
Deine Abfrage isz zwar atypisch für eine between-Abfrage aber ein Index über ide beiden Spalten sollte passend sein

ryLIX 21. Feb 2009 18:09

Re: BETWEEN schneller machen?
 
Den Index hab ich nun mal erstellt aber wirklich geändert hat sich nichts an er Geschwindigkeit :?

SQL-Code:
CREATE INDEX [IDX_VIN_FGSTNR_] ON [vin_fgstnr](
[fgstnr_von] ASC,
[fgstnr_bis] ASC
)

Dax 21. Feb 2009 18:11

Re: BETWEEN schneller machen?
 
Lege probeweise mal zwei Indizes an, einen für jede Spalte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 Uhr.
Seite 1 von 3  1 23      

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