AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Performancefrage

Ein Thema von ChrisE · begonnen am 9. Aug 2011 · letzter Beitrag vom 10. Aug 2011
Antwort Antwort
WladiD

Registriert seit: 27. Jan 2006
Ort: Celle
145 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Performancefrage

  Alt 9. Aug 2011, 13:02
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:
SELECT FIRST 1 bla, blub, tralla FROM Messungen ORDER BY Startzeit DESC
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.

Dieser Fall schreit förmlich nach einem Index...kommt natürlich auf die Größe der Tabelle an.
Waldemar Derr
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#2

AW: Performancefrage

  Alt 9. Aug 2011, 13:16
Dabei ist es wichtig, dass ein absteigender Index angelegt wird.
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Performancefrage

  Alt 9. Aug 2011, 13:19
BTW. SQL-Formatierung geht als Erweiterung des CODE-Tags (=SQL)
THX
Dieser Fall schreit förmlich nach einem Index...kommt natürlich auf die Größe der Tabelle an.
Dabei ist es wichtig, dass ein absteigender Index angelegt wird.
Das heißt, dass wenn ich die älteste Messung und die neueste möchte brauche ich zwei Indizes?

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#4

AW: Performancefrage

  Alt 9. Aug 2011, 13:25
Richtig.

MIN => aufsteigender (ASC) Index
MAX => absteigender (DESC) Index

Thomas
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Performancefrage

  Alt 9. Aug 2011, 13:43
Danke Euch allen

Ich werde also zwei Indizes anlegen und die Variante SELECT FIRST 1 bla, blub, tralla FROM Messungen ORDER BY Startzeit DESC bzw ...ASC verwenden.

Bleibt nur noch die Frage ob man noch noch schneller bekommt mit einer SP?

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
WladiD

Registriert seit: 27. Jan 2006
Ort: Celle
145 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Performancefrage

  Alt 9. Aug 2011, 13:57
Bleibt nur noch die Frage ob man noch noch schneller bekommt mit einer SP?
Das wird sicherlich um einige Tausend CPU-Takte schneller, da das Parsen der Query entfällt. Aber den Performancegewinn wirst du nicht messen können

Fazit: Das lohnt sich nicht.
Waldemar Derr
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Performancefrage

  Alt 9. Aug 2011, 14:04
Fazit: Das lohnt sich nicht.
Danke

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#8

AW: Performancefrage

  Alt 9. Aug 2011, 18:09
Richtig.

MIN => aufsteigender (ASC) Index
MAX => absteigender (DESC) Index

Thomas
Echt? Ich muss doch beim Index für MIN bzw. MAX nur den ersten oder letzten Eintrag nehmen. Beide sind gleich schnell zu erhalten... I
Das Bild hängt schief.
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#9

AW: Performancefrage

  Alt 9. Aug 2011, 18:51
Echt.

Probier einfach mal aus: Erstelle dir eine Tabelle mit einem Feld und führe dann aus:

- MIN und MAX ohne Index
- MIN und MAX bei Existenz eines aufsteigenden Index
- MIN und MAX bei Existenz eines absteigenden Index
- MIN und MAX bei Existenz beider Indizes

Welche Ausführungspläne werden für die 4 Varianten gewählt?
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#10

AW: Performancefrage

  Alt 10. Aug 2011, 07:52
Ach, ich sehe gerade: Firebird. Na dann is klar.

MSSQL z.B. ist das schlauer
Das Bild hängt schief.
  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 20:00 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