AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL-Abfrage langsam?
Thema durchsuchen
Ansicht
Themen-Optionen

SQL-Abfrage langsam?

Ein Thema von Helmi · begonnen am 13. Mai 2017 · letzter Beitrag vom 15. Mai 2017
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#1

SQL-Abfrage langsam?

  Alt 13. Mai 2017, 20:04
Datenbank: Firebird • Version: 2.5 • Zugriff über: ZEOS
Hallo,

ich hab eine Datenbank die momentan knapp 53000 Datensätze hat.

Wenn ich folgendes Statement absetze, dann dauert das etwa 500-1500ms.
SELECT DATUM, UHRZEIT, TEMPSENSOR_1, FEUCHTESENSOR_1 FROM Wetterdaten WHERE DATUM = '12.05.2017ORDER BY UHRZEIT (das feste Datum ist normalerweise ein DateTimePicker)

Ich finde das irgendwie langsam.

Ist das eine reele Zeit für so etwas?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
jobo

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

AW: SQL-Abfrage langsam?

  Alt 13. Mai 2017, 20:12
Ist ein Index auf dem Datumsfeld?
Der sollte es beschleunigen.

Ansonsten fragt man Datumswerte nicht als String ab. Und speichert sie in der Tabelle auch nicht als String, sondern als Date Typ.
Dann sollte das alles kein Problem sein.

Hilfreich wäre die Spaltendefinition der Datumsspalte in der Tabelle.
Gruß, Jo
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: SQL-Abfrage langsam?

  Alt 13. Mai 2017, 20:16
So richtig schnell würd' ich dazu nicht sagen.

Wie oft wird das Statement ausgeführt?

Bei meinen FireBird-DBs ist sowas immer beim ersten Mal deutlich langsamer, als bei wiederholtem Aufruf.

Gibt's 'nen Index auf Datum und einen Index auf Uhrzeit?

Und wie Jobo schon schreibt:

Ein Datum sollte man als Datum speichern.
Ebenso auch Uhrzeit ...

Zeig' uns bitte mal den Quelltext rund um den Aufruf des Statements, eventuell kann man da was verbessern.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#4

AW: SQL-Abfrage langsam?

  Alt 13. Mai 2017, 20:20
Hallo,

Uhrzeit ist vom Typ Date in der Datenbank.

Ansonsten gibt es keine Indexe.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: SQL-Abfrage langsam?

  Alt 13. Mai 2017, 20:26
Wird's damit besser?
SQL-Code:
CREATE INDEX IX_Wetterdaten_Datum on Wetterdaten (DATUM);
CREATE INDEX IX_Wetterdaten_Uhrzeit on Wetterdaten (Uhrzeit);
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#6

AW: SQL-Abfrage langsam?

  Alt 13. Mai 2017, 20:28
Wird's damit besser?
SQL-Code:
CREATE INDEX IX_Wetterdaten_Datum on Wetterdaten (DATUM);
CREATE INDEX IX_Wetterdaten_Uhrzeit on Wetterdaten (Uhrzeit);
Ich hab einen Indes auf Datum gelegt, krass - jetzt sind es max. 20ms
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#7

AW: SQL-Abfrage langsam?

  Alt 14. Mai 2017, 15:57
Moin...
Zitat:
Uhrzeit ist vom Typ Date in der Datenbank.
Delphi-Quellcode:
SELECT DATUM, UHRZEIT, TEMPSENSOR_1, FEUCHTESENSOR_1 FROM Wetterdaten WHERE DATUM = '12.05.2017' ORDER BY UHRZEIT
.
...und warum übergibst du trotzdem das Datum als string? Damit die DB das casten muß?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

AW: SQL-Abfrage langsam?

  Alt 14. Mai 2017, 16:37
Parameter?

Code:
WHERE DATUM::VARCHAR = '12.05.2017'
WHERE DATUM = '12.05.2017'::DATE
Wie rum Castet die DB eigentlich, bei sowas?
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#9

AW: SQL-Abfrage langsam?

  Alt 14. Mai 2017, 16:39
Zitat:
Parameter?
...versteht sich von allein. Manchmal hätte ich einen virtuellen "MÖÖÖP" mit rotem Knopf wenn ich sowas sehe...

Geändert von haentschman (14. Mai 2017 um 16:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#10

AW: SQL-Abfrage langsam?

  Alt 14. Mai 2017, 19:56
...und warum übergibst du trotzdem das Datum als string? Damit die DB das casten muß?
mmmh - irgendwie hatte ich im Hinterkopf, dass Firebird bei Abfragen keine Parameter erlaubt/will/kann.

Nach nem Test funktioniert es aber doch
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  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 17:21 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