idx_ABFDok_ABFPosArtNr_Datum_Type_KundenNr ist ein Combi-Index, der genutzt wird, wenn im WHERE direkt auf alle Felder (ABFPosArtNr, ABFDocDatum, ABFDocType, ABFDocKundenNr) gerpft wird.
Hast du einen Index nur auf "ABFDocDatum", also
CREATE INDEX idx_ABFDocDatum ON ABFDok (ABFDocDatum);
(oder z.B.
ABFDocDatum UNIQUE
im CREATE TABLE), dann
* wird bei
WHERE ABFDocDatum ...
dieser Index benutzt
* aber nicht bei
WHERE Year(ABFDocDatum) ...
Für Letzteres bräuchte man z.B. sowas
CREATE INDEX idx_YearABFDocDatum ON ABFDok (Year(ABFDocDatum));
(falls
Access sowas kann)
Und wie gesagt, kommt es teilweise auch auch auf die Art des Indize drauf an.
MySQL oder z.B. Postgres kennen unterschiedliche Typen (z.B. B-tree, hash, GiST, SP-GiST, GIN, and BRIN)
B-Tree ist heute oft gebräuchlich und auch für ein
LIKE 'irgendwas*'
geeignet, während HASH für ein LIKE absolut unnütz ist, aber für ein
=
mit langen Strings super wäre.
Und für
LIKE '*sonstwas'
wäre es besser, wenn der B-Tree rückwärts von hinten aufgebaut ist.