Avoid Heavy Queries in Laravel Using exists() Instead of count()

Check record existence efficiently without unnecessary database work.

  • 22 May, 2026
  • 117 Views

Avoid Heavy Queries in Laravel Using exists() Instead of count()

In Laravel applications, developers often write:

if (Order::where('status', 'pending')->count() > 0) {
    //
}

This works…

But it’s not optimized.

The Better Approach: exists()

Laravel provides a cleaner and faster solution:

if (Order::where('status', 'pending')->exists()) {
    //
}

Why exists() Is Faster count()

Database counts all matching rowsexists()

Database stops after finding the first match

👉 Less work

👉 Faster queries

👉 Better performance


Real Project Example

Checking active subscriptions:

if (
    Subscription::where('user_id', $user->id)
        ->where('status', 'active')
        ->exists()
) {
    // allow access
}

Opposite Check

Laravel also provides:

->doesntExist()

Example:

if (
    User::where('email', $email)
        ->doesntExist()
) {
    // create user
}

Why This Is Useful

It helps you:

  • Reduce database workload
  • Improve query performance
  • Write cleaner intent-based code
  • Optimize high-traffic applications

When to Use It

Use exists() when:

  • You only need a true/false result
  • Checking if records exist
  • Validating conditions quickly

Avoid Using count() For

Avoid:

->count() > 0

when the actual count value is not needed.

Share: