Most of the ASP.NET MVC paging solutions I have found by googling look like they get all rows from a database table in the form of a IEnumerable collection, perform some paging
You're wrong. PagedList will do it on the DB server, as it has IQueryable extensions.