Es kommt sicher darauf an, ob der
SQL Server eine Ahnung hat, wieviele Datensätze in der Datenmenge enthalten sind.
Bei
SELECT * FROM Tabelle kann der Server diese Anzahl vorher ermitteln.
Bei JOINs oder Abfragen mit Where-Bedingungen ist dies nicht möglich, denn der Server fängt an, Datensätze auszuliefern bevor die Abfrage komplett fertig ist.
Das war jetzt alles Spekulation, aber erscheint mir richtig.