Nested table as condition prevents using index
Hmmm.... this is an interesting one. The Oracle optimizer is a bit of a black box as far as mere mortals like myself are concerned... Jonathan Lewis wrote a 536 page book on the topic and that's just the **fundamentals* (and it ain't bedtime reading!).

Two questions.

a) Did you flush the caches before/after each query - maybe the first affects the second - i.e. the optimizer figures out after the first query that it's not worth using an index?

b) What happens if you bump up those numbers in 'M' and 'D'? Does there come a point where it switches back to an INDEX scan? I'm guessing that such a point will come (but see point a)

Just a couple of thoughts - I don't have an Oracle system to hand.