Hi Helmut Weber,
Es Dauert verdammt lange, bis sich die Ergebnisse zu sehen bekomme (Wenn mir sogar ein Server-Timeout nicht dazwischen kommt).
Auch einen Index über die Spalte "part_id" und "entry" hat keinen Erfolg gebracht.
das ist der Preis dafür, daß Du "year()" verwendest - damit machst Du Dir den Indexzugriff kaputt. Der Index über "entry" wäre nämlich die richtige Idee gewesen.
Würdest Du den "entry"-Wert mit BETWEEN abfragen, dann könntest Du von diesem Index profitieren - weil dann beim Spaltenzugriff keine Funktion mehr aufgerufen werden müßte. (EXPLAIN hätte Dir das übrigens auch gezeigt.)
(Bei den konstanten Vergleichswerten für den 1. Januar und den 31. Dezember vermutlich schon - irgendwas in Richtung to_date(), vermute ich mal, ich habe die Syntax gerade nicht zur Hand - aber das geschieht dann nur ein einziges Mal während der Codegenerierung.)
Daß dies dann aber wirklich schnell wird, bezweifele ich - weil der Index sehr wahrscheinlich zu schlecht projeziert.
Ein Index bringt dann etwas, wenn Du eine _kleine_ Teilmenge der Tabelle herausholen willst - die Grenze liegt irgendwo in der Größenordnung von 5-10%.
Das würde bedeuten, daß Dein Datenbestand mindestens 10-20 Jahre tief sein muß ...
Stelle Dich geistig darauf ein, daß Dein Problem mit Deiner existierenden Datenstruktur nicht schneller als mit einem full table scan zu lösen ist.
Viele Grüße
Michael
T'Pol: I apologize if I acted inappropriately.
V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
(sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.