The linked article points out that COUNT queries might be unexpectedly slow in PostgreSQL.
If you just need to know "are there any records" use any?. This uses SELECT 1 AS one FROM ... LIMIT 1 under the hood.
If you just need to know "are there no records" use empty? or none?. This uses SELECT 1 AS one FROM ... LIMIT 1 under the hood.
In short: Replace foo.count > 0 with foo.any? or foo.count == 0 with foo.none?
If you require quick counts and can tolerate some level of imprecision, consider exploring the fast_count Show archive.org snapshot gem.
Related
You may circumvent this by using SQL: Fast threshold counts with LIMIT
Posted by Michael Leimstädtner to makandra dev (2021-05-31 06:18)