Laravel simplePaginate: more effective with bigger data

Laravel pagination is quite a simple thing to use, but to determine the amount of pages it makes additional query to the database, which may be a problem for bigger amount of data. And you can actually avoid it.

Let’s take a simple pagination example from a table with 5000 customers:

$customers = Customer::paginate(10);

And then in Blade file you have this:

    @foreach ($customers as $customer)
First name Last name Email
{{ $customer->first_name }} {{ $customer->last_name }} {{ $customer->email }}
{{ $customers->links() }}

Here’s how the queries look in Laravel Debugbar.

Laravel pagination

As you can see, there’s query for the actual page, and then counting the amount of entries/pages.

What if you don’t need the numbers of pages and you just want to show links for Previous and Next? There’s a function for that called simplePaginate().

$customers = Customer::simplePaginate(10);

Laravel simplepaginate

Now, look at the amount of queries.

Hope that helps!

Like our articles?
Check out our Laravel online courses!


  1. Looking at both picture i am lil confushed. The solutions you have provided for bigger data is slower and consuming more memory according to the screenshots you have posted.

      • Yes the info is actually correct. But the screenshot were not reflecting it. And it ‘s not complex or simple query IMHO as the query will not slow down the application because of large data. It is just going it minimize a loop to render pagination number. And if you look at the query time there is only 2ms difference.



Please enter your comment!
Please enter your name here