Actions
Patch #24839
closedMinor performance improvement - Replace count by exists?
Start date:
Due date:
% Done:
0%
Estimated time:
Description
When checking to see if a query returns any records, we should use the ActiveRecord exists?
method instead of count
.
Here is an example in the versions/show.html.erb
file:
diff --git a/app/views/versions/show.html.erb b/app/views/versions/show.html.erb
index 82bd572..fc22a9f 100644
--- a/app/views/versions/show.html.erb
+++ b/app/views/versions/show.html.erb
@@ -32,7 +32,7 @@
<% end %>
<div id="status_by">
-<%= render_issue_status_by(@version, params[:status_by]) if @version.fixed_issues.count > 0 %>
+<%= render_issue_status_by(@version, params[:status_by]) if @version.fixed_issues.exists? %>
</div>
</div>
If we compare the generated queries with PostgreSQL:SELECT 1 AS one FROM "issues" WHERE "issues"."fixed_version_id" = ??? LIMIT 1;
should be faster thanSELECT COUNT(*) FROM "issues" WHERE "issues"."fixed_version_id" = ???;
Files
Related issues
Updated by Go MAEDA almost 8 years ago
- File use-exists-instead-of-count.diff added
Thank you for the patch.
I found three more count
which can be replaced with exists?
. This is an updated patch: use-exists-instead-of-count.diff
Although .count > 0
can be found in app/views/imports/show.html.erb
too, I have not changed because of cache efficiency (exactly the same query will be performed just after them).
Updated by Go MAEDA almost 8 years ago
- File deleted (
use-exists-instead-of-count.diff)
Updated by Go MAEDA almost 8 years ago
Excluded app/models/project.rb
from the patch because of cache efficiency.
Updated by Jean-Philippe Lang almost 8 years ago
- Status changed from New to Closed
- Assignee set to Jean-Philippe Lang
- Target version set to 3.4.0
Committed, thanks.
Updated by Go MAEDA over 6 years ago
- Related to Patch #26728: count > 0 vs exists? added
Actions