A paginação da estrutura de entidades com o método de extensão é lenta?

Eu tenho alguns problemas com uma consulta lenta no Entity Framework em C #. Eu criei um método de extensão chamado Page para lidar com paginação, mas quando eu usá-lo a consulta fica muito lenta. Se eu fizer apenas .Skip (page.Value * pageSize.Value) .Take (pageSize.Value) em vez de usar a página, a consulta fica muito mais rápida. Eu acho que fazer isso com Page busca todos os contatos antes da paginação. Existe uma maneira de evitar isso ou estou fazendo algo errado?

Inquerir:

var contacts = db.Contacts
                        .Where(x => x.AccountID == accountID && x.Deleted == false)
                        .OrderByDescending(x => x.FirstName)
                        .ThenBy(x => x.LastName)
                        .ThenBy(x => x.CreatedDate)
                        .Page(page, pageSize);

return contacts.ToList();

Método de extensão:

    public static IEnumerable<T> Page<T>(this IEnumerable<T> elements, int? page, int? pageSize)
    {
        if (page.HasValue && pageSize.HasValue)
            return elements.Skip(page.Value * pageSize.Value).Take(pageSize.Value);
        else
            return elements;
    }

questionAnswers(1)

yourAnswerToTheQuestion