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