the queryset filter will call all() first ?

when I reading the doc:
i see :
With the default manager class, it is the same as:

does that mean django will first fetch all data from db to queryset (cache or memory) then filter the queryset locally ?
so if I have 10 million data in a db and I only need 10 of them, I also have to fetch the 10 million data from db to django then filter out 10 rows locally ?

No - you’re on the right page, but just haven’t quite read far enough. See

The whole linked page When QuerySets are evaluated is worth reading.