Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#26

AW: SQL optimimieren notwendig Max()

  Alt 18. Jan 2022, 10:00
Du hast deine Bedingung für die Abfrage geändert.
Die zweite Bedingung der ursprünglichen Abfrage bezog sich auf Feld3.
("not in" oder mehrere "<>" führen zum selben Plan und sind somit auch gleich langsam)
SQL-Code:
/**/
Select Max(Feld1) From tabelle1 where Feld2 = 'Schraubeand Feld3 <> 'kleinand Feld 3 <> ''
Darauf bezogen sind auch die Optimierungsversuche und mein Vorschlag für einen Index über zwei Felder (den du als Plan für diese Abfrage direkt angeben könntest).

Deine neue Abfrage macht nicht viel Sinn, da sich die äußere Bedingung auch auf Feld2 bezieht.
Mit der Idee zweier geschachtelten Abfragen wurde versucht den SQL-Server auszutricksen und ein bestimmten Plan für die Abfrage zu erzwingen.
Das klappt aber scheinbar nicht, weil der die Abfrage vor der Ausführung optimiert und wieder umstellt.
Es ist auch sinnvoller den Ausführungsplan direkt anzugeben, als zu solchen Tricks zu greifen.
Andernfalls muss man sich den automatisch erzeugten Plan genau anschauen.
Gerade wenn mehere Index für ein Feld existieren, muss auch der Richtige und in der richtigen Reihenfolge genutzt werden.
  Mit Zitat antworten Zitat