top button
Flag Notify
Site Registration

What would you do to optimize slow-running queries?​

+4 votes
241 views
What would you do to optimize slow-running queries?​
posted Jun 30, 2015 by Manikandan J

Share this question
Facebook Share Button Twitter Share Button LinkedIn Share Button

1 Answer

0 votes
answer Jul 2, 2015 by Vrije Mani Upadhyay
Similar Questions
+2 votes

I have the following setup:

class Unit
 has_many :reports
end

class Report
 belongs_to :unit
end

Basically I have a list of units and I want to select the last report for each unit (based on time) and order the resulting last reports by longitude.

Sounds simple, but my implementation looks like this:

units = current_user.accessible_units
report_ids = []
if units.size > 0
  units.map(&:id).uniq.each do |id|
    report = Report.select(:id).where(unit_id: id).order("time desc").limit(1)
    if !report.empty?
      report_ids << report.try(:first).try(:id)
    end
  end
end   
reports = Report.where(id: report_ids).order("longitude desc")

Is there a way to perform this same query using sql (active record relations) and minimize the use of ruby iterators, like map and each? Also notice in query above, I make two hits to the database by querying reports for time and then descending order. Is there a way to eliminate that too?

+3 votes

(ie. NULL - 25 = ?)​

+3 votes

How to convert c # inline queries into stored procedure written in transact sql?

...