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

Check record existence efficiently without unnecessary database work.

  • 22 May, 2026
  • 131 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: