Hallo zusammen,
ich habe ein Problem mit dieser Abfrage hier:
PHP-Code:
SELECT d.DealerCode, d.DealerName, d.City, SUM(q.A3) AS 'Interviews', r.QCES
FROM tblDealerAdresses AS d
INNER JOIN tblQuestionairesS AS q
ON d.DealerCode = q.DealerCode
INNER JOIN tblResultsSalesPrint AS r
ON d.DealerCode = r.DealerCode
WHERE q.RunNo BETWEEN 97 AND 108 AND r.RunNo = 108
GROUP BY d.DealerCode, d.DealerName, d.City, r.QCES
ORDER BY QCES DESC
Die Abfrage funktioniert soweit gut. Die ganze Abfrage wird normalerweise Dynamisch zusammen gestellt und ein Parameter davon ist die Anzahl der Datensätze (TOP ....). Wenn im ORDER BY DESC steht ist es egal welche TOP-Anzahl ich ihm gebe, es ist immer schnell. Sobald ich aber ASC bei ORDER BY nehme kommen die Probleme. Wenn die ganze Ausgabe ohne TOP ist geht es auch super schnell. Es funktioniert genau bis TOP 49 und höherl, nehme ich aber TOP 48 und kleiner, benötigt die Abfrage ca. 14 Sekunden und mehr, bei TOP 1 dauert sie sogar 22 Sekunden. Insgesamt sind es 601 Datensätze.
Wie kann ich das nun verhindern. Ein Möglichkeit ist sicher eine TempTabelle zu erstellen aber diese Lösung finde ich nicht so gut. Auch habe ich an Index usw. gedacht nur die Abfrage funktioniert ja bis =>49.
Bin für jeden Tipp dankbar.