AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL optimimieren notwendig Max()
Thema durchsuchen
Ansicht
Themen-Optionen

SQL optimimieren notwendig Max()

Ein Thema von Dumpfbacke · begonnen am 17. Jan 2022 · letzter Beitrag vom 24. Jan 2022
Antwort Antwort
Delphi.Narium

Registriert seit: 27. Nov 2017
2.552 Beiträge
 
Delphi 7 Professional
 
#1

AW: SQL optimimieren notwendig Max()

  Alt 17. Jan 2022, 12:00
Hab' ich das recht verstanden? Du suchst

Select datum From tabelle1 where Feld2 = 'Schraubeand Feld3 = 'kleinand Feld 3 <> ''

und davon dann den Satz mit dem höchsten Datum?

SQL-Code:
select max(Datum) as Max_Datum from (
  select datum
  from tabelle1
  where Feld2 = 'Schraubeand Feld3 = 'kleinand Feld 3 <> ''
)
Damit werden erstmal "nur" die Sätze gesucht, die per Index und Bedingung wohl recht schnell gefunden werden.

Von der nun recht kleinen "Restmenge" suchen wir anschließend das höchste Datum.

Das kann, aus Erfahrung, je nach Konstellation schonmal so die eine oder andere Minute an Abfragezeit einsparen.

Dann hast Du einen Index auf Feld1, Feld2 und Feld3. Feld1 ist aber nicht in der Wherebedingung enthalten und hat hier, als erstes Feld im Index (eventuell) keine Auswirkung bzw. der Index wird nicht oder nicht optimal genutzt.

Was sagt denn der Ausführungsplan zu der Abfrage?

Probiere es bitte mal mit dem geschachtelten SQL und einem Index nur auf Feld2 und Feld3.

Zu Uwes Anmerkung bezüglich der Wherebedingung und Deiner Antwort:
Zitat:
Doch das ist so gewollt bzw. die Vorgabe. Die Felder sind nicht NULL sondern teilweise leer und diese sollen hier nicht berücksichtig werden.
Wenn Feld3 = 'klein' ist, gilt zwangsläufig: Feld3 <> ' '.
Wenn diese reduntante Prüfung laut Vorgabe gewollt ist, sollte man mal die Sinnhaftigkeit der Vorgabe überprüfen.

Vorteil: Die Datenbank spart sich damit eine unnütze Abfrage, was sich in Bezug auf die Laufzeit (ggfls. sogar die Nutzung des Index) durchaus positiv auswirken kann.
  Mit Zitat antworten Zitat
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
332 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: SQL optimimieren notwendig Max()

  Alt 17. Jan 2022, 12:13
Leider habe ich hier einen kleinen Tipfehler gemacht es muss richtig lauten Feld3 <> 'klein'. Aus diesem grund auch <> ''. Sorry. Ich habe es oben mal angepasst.
Tanja

Geändert von Dumpfbacke (17. Jan 2022 um 12:45 Uhr)
  Mit Zitat antworten Zitat
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
332 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: SQL optimimieren notwendig Max()

  Alt 17. Jan 2022, 12:16
[QUOTE=Delphi.Narium;1500711]Hab' ich das recht verstanden? Du suchst

und davon dann den Satz mit dem höchsten Datum?

SQL-Code:
select max(Datum) as Max_Datum from (
  select datum
  from tabelle1
  where Feld2 = 'Schraubeand Feld3 = 'kleinand Feld 3 <> ''
)
Das dauert genau so lange wie meiner
Tanja

Geändert von Dumpfbacke (17. Jan 2022 um 12:44 Uhr)
  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 01:47 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 by Thomas Breitkreuz