Wenn ich mir so die Zugriffsverfahren ansehe und die Ergebnisse betrachte, so kann ich die 20%-Regel nicht nachvollziehen.
Mache ich einen Select, der mir aus 10Mio Sätzen ca. 1/3 der daten liefert, und ein passender Index vorhanden ist, so weist der Optimizer diesen zumindest aus.
Das Ergebnis kommt auch schneller als bei einem Select, der einen Tablescan durchführt.

Bei Oracle kann ich das z.T. nachvollziehen. Beim Laden von Daten aus einer Oracle-DB, die Daten werden per View bereitgestellt, dauert es mitunter doch sehr lange bis der 1. Satz geliefert wird obwohl (angeblich) Indizes vorhanden sind.

Ich habe aber auch festgestellt, dass ins besonders beim Group by der zwangsweise Verzicht auf die Verwendung eines Index, wenn eine Where-Bedingung mit passendem Index vorhanden ist, schneller zum gewünschten Ergebnis führt.
Dazu behelfe ich mir mit folgendem SQL:

select coalesec(key1, key1) key1, coalesec(key2, key2) key2, sum(feld)
from mytable
where "Irgendeine Bedingung"
group by coalesec(key1, key1), coalesec(key2, key2)

Durch das coalsece wird die Verwendung eines Index für Group By verhindert, da dies ja ein "berechnetes" Ergebnis darstellt.
Allerdings wird für das Where der korrekte Index verwendet.
Lass ich den coalesce weg, wird der Index der Key-Felder verwendet, wobei diese ja durch die Where-Klausel noch eingeschränkt werden müssen.

Klar, jede DB implementiert anders um schnell zum Ergebnis zu kommen, manchmal halt nicht so schnell.