Hallo Thomas,
hab den LEFT JOIN nochmal ohne DISTINCT und mit dem MIN(ArtName) getestet - die Ergebnisse sind gleich, zeitlich ist es allerdings kein Unterschied.
Vermutlich lasse ich es so erst einmal - der Knackpunkt sind nach wie vor die Zeilen der invoicelines - je nach Abfragezeitraum erhöht sich natürlich auch wieder die Zahl der Zeilen die gejoint werden.
Was ich nicht verstehe: Ich habe über die invoicelines eine Index über 5 Spalten angelegt - den idx_speed:
OrderDate
OrderQty
attr_department
attr_gender
ItemNrInt
Wenn allerdings der Abfragezeitraum erweitert wird z.B.
...
invoicelines.OrderDate >= '2011-12-01 00:00:00' AND invoicelines.OrderDate <= '2012-02-09 23:59:59'
...
dann wird laut EXPLAIN der Index idx_speed nicht mehr verwendet und alle 580.000 Zeilen werden für die Abfrage gejoint - hat das einen bestimmten Grund?
Danke nochmals
Mark