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

Check record existence efficiently without unnecessary database work.

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