When to use WP_query(), query_posts() and pre_get_posts
I just noticed today that the documentation for query_posts() mentions some "disadvantages" of using query_posts for altering the main Loop, notably: 'causes additional SQL queries'.
This seems to imply that there's another way / a better way. Obviously there's get_posts() and WP_Query for secondary loops, but I don't see them as addressing the "disadvantages" listed in the Codex documentation.
I can see that by waiting until you're in the template to run query_posts, WordPress has already run a query once and this is now a second query that clobbers the first one (the first one being basically ignored). This definitely DOES sound inefficient (though perhaps not a big deal, who knows?)
My question is: is there an alternative to query_posts that does NOT add "additional SQL queries" or is the Codex documentation simply deceiving?