Einzelnen Beitrag anzeigen

Dumpfbacke

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

AW: SQL optimimieren notwendig Max()

  Alt 20. Jan 2022, 17:34
Folgender Vorschlag:
Code:
Select Max(Feld1)
from (select Feld1, Feld3
      from (Select Feld1, Feld2, Feld3
            from tabelle1
            where Feld2 = 'Schraube')
      where Feld3 <> 'klein' and Feld 3 <> '')
Das sollte dazu führen, dass im tiefsten Sub-Select der Index von Feld2 gezogen wird.
Dieser liefert nur 29 Datensätze.
Das Sub-Select in der darüber liegenden Ebene macht ein Full Table Scan über die 29 Datensätze. Dies darf nur ein paar ms dauern.
Selbst wenn dann immer noch 29 Datensätze übrig wären, kann das Max(Feld1) auf oberster Ebene ebenfalls nur ms dauern.

Sollte die gesamte Abfrage immer noch 6 Sekunden benötigen, ist entweder der Index für Feld2 nicht in Ordnung oder es liegt mMn nach eher ein technisches oder DB-Konfigurations Problem vor.
Es ist wie verhext hier. Es geht auch nicht. Bei mir muss doch dann irgendetwas nicht in Ordnung sei. Es kommt erneut zu den 6 Sekunden. Das ganze wundert micht so langsamm.

Prepare time = 0ms
Execute time = 6s 657ms
Avg fetch time = 6.657,00 ms
Current memory = 18.323.720
Max memory = 147.452.584
Memory buffers = 2.048
Reads from disk to cache = 90.199
Writes from cache to disk = 0
Fetches from cache = 90.277
Tanja
  Mit Zitat antworten Zitat