AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi BETWEEN schneller machen?
Thema durchsuchen
Ansicht
Themen-Optionen

BETWEEN schneller machen?

Ein Thema von ryLIX · begonnen am 21. Feb 2009 · letzter Beitrag vom 22. Feb 2009
Antwort Antwort
Seite 1 von 3  1 23      
ryLIX

Registriert seit: 16. Nov 2008
Ort: Westoverledingen
264 Beiträge
 
RAD-Studio 2009 Pro
 
#1

BETWEEN schneller machen?

  Alt 21. Feb 2009, 09:02
Datenbank: SQLite • Version: 3 • Zugriff über: DISQLite3
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.

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?
Markus
Hamburflys, Scrubble-Fubble-Puff-Shake, Muffin-Purper-Gurk?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: BETWEEN schneller machen?

  Alt 21. Feb 2009, 09:08
Was für Indizes existieren?
Markus Kinzler
  Mit Zitat antworten Zitat
ryLIX

Registriert seit: 16. Nov 2008
Ort: Westoverledingen
264 Beiträge
 
RAD-Studio 2009 Pro
 
#3

Re: BETWEEN schneller machen?

  Alt 21. Feb 2009, 09:21
Derzeit keine.
Gibt auch keine Unique Felder.
Markus
Hamburflys, Scrubble-Fubble-Puff-Shake, Muffin-Purper-Gurk?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: BETWEEN schneller machen?

  Alt 21. Feb 2009, 09:22
Indizes sind aber das Instrument der Wahl um Abfragen zu optimieren.
Markus Kinzler
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.926 Beiträge
 
FreePascal / Lazarus
 
#5

Re: BETWEEN schneller machen?

  Alt 21. Feb 2009, 09:33
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
Karl-Heinz
  Mit Zitat antworten Zitat
ryLIX

Registriert seit: 16. Nov 2008
Ort: Westoverledingen
264 Beiträge
 
RAD-Studio 2009 Pro
 
#6

Re: BETWEEN schneller machen?

  Alt 21. Feb 2009, 09:41
Der Index sollte dann für _von und _bis sein oder?
Muss ich an der Abfrage noch etwas verändern?
Markus
Hamburflys, Scrubble-Fubble-Puff-Shake, Muffin-Purper-Gurk?
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: BETWEEN schneller machen?

  Alt 21. Feb 2009, 15:59
Zitat von ryLIX:
Muss ich an der Abfrage noch etwas verändern?
Nein, die ist doch schon minimalistisch.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: BETWEEN schneller machen?

  Alt 21. Feb 2009, 17:55
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
Markus Kinzler
  Mit Zitat antworten Zitat
ryLIX

Registriert seit: 16. Nov 2008
Ort: Westoverledingen
264 Beiträge
 
RAD-Studio 2009 Pro
 
#9

Re: BETWEEN schneller machen?

  Alt 21. Feb 2009, 19:09
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
)
Markus
Hamburflys, Scrubble-Fubble-Puff-Shake, Muffin-Purper-Gurk?
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#10

Re: BETWEEN schneller machen?

  Alt 21. Feb 2009, 19:11
Lege probeweise mal zwei Indizes an, einen für jede Spalte.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 10:50 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