Hello Vinzenz,
Bei einer MyISAM-MySQL-Tabelle mit ca 2 Mio Zeilen bei insgesamt 1,5GB Größe kommen hauptsächlich SELECT-Queries diese 3 Anfragen:
SELECT COUNT(*) WHERE eineID IN (1,2,3);
SELECT COUNT(*) WHERE eineID IN (1,2,3) AND andereID IN (4,5,6);
SELECT COUNT(*) WHERE eineID IN (1,2,3) AND andereID IN (4,5,6) AND einDatum>"2011-01-01";befrage EXPLAIN nach dem Ausführungsplan.
einzig interessante Alternative ist ein kombinierter Index in der Reihenfolge
(eineID, andereID, einDatum)
Jetzt mal Hand aufs Herz. Meinst Du wirklich, dass ein kombinierter Index Vorteile bringt?
Das erste Selektionskriterium ist die ID aus dem Primärschlüssel. Die ist zwangsweise unique inzidiert. Es bleiben dann also sowieso nur die Datensätze aus dem ersten Set (eineID) übrig.
Diese noch auf die restlichen Bedingungen hin zu untersuchen dürfte ohne Index sogar schneller gehen, als mit.
Einzige vorstellbare Ausnahme: Das primäre Set wird doch sehr groß, also nicht nur drei Datensätze, sondern Dreihunderttausend. Aber auf diese Rückfrge habe ich noch keine Antwort erhalten.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg