I have learnt that QueryBuilder.range executes two queries (first for getting result and second for total count). As far as I know it could be implemented in more effective way for Postgres and MySQL as well.
In Stack-overflow question is described technics for both databases.
I think that at least details of range implementation should be mentioned in the documentation.