does a subquery pull the entire table?
It shouldn't. It depends on what the system can simplify the query to.

You can demonstrate this very easily by considering the plan for queries such as:

SELECT *
FROM YourTable
WHERE ID &lt; 5;

SELECT *
FROM (SELECT * FROM YourTable) as t
WHERE ID &lt; 5;


The two should be identical.