AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird SELECT BETWEEN etxrem langsam
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird SELECT BETWEEN etxrem langsam

Ein Thema von mlc42 · begonnen am 9. Feb 2013 · letzter Beitrag vom 9. Feb 2013
Antwort Antwort
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#1

AW: Firebird SELECT BETWEEN etxrem langsam

  Alt 9. Feb 2013, 15:19
Das Datum ist timestamp die anderen Felder sind Int.
Dann solltest Du entweder explizit Deinen Datums-String in Timestamp konvertieren oder in Delphi - falls Du es von dort aufrufst- mit Parametern und natürlich den richtigen Typen arbeiten.
Wenn ich nur die ID Abfrage auf = ändere und Datum auf BETWEEN lasse geht es auch schon schnell.
Hier dürfte durch die Gleichheitsprüfung die Ergebnismenge auf einen Schlag so stark eingeschränkt sein, das der Rest vom Verarbeitungsaufwand nicht ins Gewicht fällt, Egal wie schlecht oder aufwändig die Abfrage da noch gestaltet ist.
Ich weiß ja nicht wie Firebird das intern speichert
Du hast alle benötigten Typinformationen (hast Du oben geschrieben), was Firebird intern macht, weiß ich auch nicht, kann, soll, muss ich auch nicht, genau wie Du.

Also schau Dich um, wie man Abfragen parametrisiert, den Parametertyp setzt und ab die Post...
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
695 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Firebird SELECT BETWEEN etxrem langsam

  Alt 9. Feb 2013, 15:34
nimm mal 3 Einzelindizes für die felder statt einem kombinierten index, den am besten löschen.
Bei deiner Abfrage mit den Betweens hast du ab dem ersten Eintrag keine sinnvolle Wirkung
mehr für deinen kombinierten Index
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
Firebird 5 Update und Know-how Workshop – 28.8.-29.08.2025 64546 Mörfelden - Walldorf
  Mit Zitat antworten Zitat
mlc42

Registriert seit: 9. Feb 2013
135 Beiträge
 
#3

AW: Firebird SELECT BETWEEN etxrem langsam

  Alt 9. Feb 2013, 17:50
@jobo

Die Abfrage wird innerhalb ANYDac erzeugt und arbeitet mit Parametern. Das mit dem Beispiel habe ich dann nur gemacht um das ganz einfach prüfen zu können.
Es macht aber keinen Unterschied.
Über den ID Index sind es ca. 7000 Datensätze. Bei der Between Abfrage kommt ja die gleiche Menge raus. Über den Index kann er ja auch da unmittelbar im Index aufsetzen.
Es ist schon seltsam.
Bei Paradox setzt so ein Range ja einfach den Zeiger auf den ersten passenden ID,DATUM und gibt dann an Hand des Schlüssels solange Datensätze aus bis es halt nicht
mehr passt.
Der MS-SQL Server macht das auch blitzschnell.

@IBExpert

Warum hat der kombinierte Index bei Between keine Wirkung mehr ? Wie soll Firebird das sonst schnell sortieren oder suchen können ?
Kombinierte Indices sind ja schon notwendig.
Ich werd mal probieren wie das dann aussieht.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: Firebird SELECT BETWEEN etxrem langsam

  Alt 9. Feb 2013, 19:43
Firebird sieht nicht, das die untere und obere Grenze der ID beim BETWEEN identisch ist, ganz einfach.
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz