![]() |
Datenbank: Firebird • Version: 2.5. • Zugriff über: IBDAC
Performancefrage
Hallo,
ich habe eine Tabelle Messungen in der sind verschiedene Informationen zu Messungen abgelegt :-) Unter anderem auch der Startzeitpunkt als TIMESTAMP. Wenn ich jetzt die jüngste Messung haben möchte würde ich folgenden Select machen:
Code:
Über den PrimeryKey ID: Integer kann ich nicht gehen, da die Messungen nicht zwingend chronologisch in der Datenbank abgelegt werden.
SELECT bla, blub, tralla FROM Messungen WHERE Startzeit = (select MAX(Startzeit) from Messungen);
So, jetzt meine Fragen:
Danke, Chris P.S.: Gibt es eigentlich keine SQL-Tags? |
AW: Performancefrage
SQL-Code:
Hierfür am Besten noche einen Index auf der Spalte Startzeit
SELECT bla, blub, tralla FROM Messungen WHERE Startzeit = ( select first 1 startzeit from Messungen order by startzeit desc);
BTW. SQL-Formatierung geht als Erweiterung des CODE-Tags (=SQL) |
AW: Performancefrage
Hi Chris,
Sub-Selects sind IMHO nicht so performant wie andere Lösungen. Man sollte möglichst auf die verzichten. Deine Abfrage würde ich wie folgt umschreiben:
Code:
Ohne einen Index muss sowohl für "MAX(Startzeit)" als auch für "ORDER BY Startzeit DESC" die gesamte Tabelle gescannt werden. Die DB kann da keine Optimierungen vornehmen.
SELECT FIRST 1 bla, blub, tralla FROM Messungen ORDER BY Startzeit DESC
Dieser Fall schreit förmlich nach einem Index...kommt natürlich auf die Größe der Tabelle an. |
AW: Performancefrage
Dabei ist es wichtig, dass ein absteigender Index angelegt wird. :-D
|
AW: Performancefrage
Zitat:
Zitat:
Zitat:
Gruß, Chris |
AW: Performancefrage
Richtig.
MIN => aufsteigender (ASC) Index MAX => absteigender (DESC) Index Thomas |
AW: Performancefrage
Danke Euch allen :-)
Ich werde also zwei Indizes anlegen und die Variante
SQL-Code:
bzw
SELECT FIRST 1 bla, blub, tralla FROM Messungen ORDER BY Startzeit DESC
SQL-Code:
verwenden.
...ASC
Bleibt nur noch die Frage ob man noch noch schneller bekommt mit einer SP? Gruß, Chris |
AW: Performancefrage
Zitat:
Fazit: Das lohnt sich nicht. |
AW: Performancefrage
Zitat:
Gruß, Chris |
AW: Performancefrage
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:45 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