From: Tom Hughes Date: Fri, 12 Dec 2008 15:17:14 +0000 (+0000) Subject: Optimise lookup of traces with a given tag. X-Git-Tag: live~7655 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/9b1b6be3719edfe165d5ae1fce502bc6ffb5de24?hp=2a121cfc41264254bdeee81fc2b4756ab4886c3a Optimise lookup of traces with a given tag. --- diff --git a/app/controllers/trace_controller.rb b/app/controllers/trace_controller.rb index 91ae92b05..bcac11844 100644 --- a/app/controllers/trace_controller.rb +++ b/app/controllers/trace_controller.rb @@ -48,8 +48,9 @@ class TraceController < ApplicationController if params[:tag] @tag = params[:tag] - conditions[0] += " AND EXISTS (SELECT * FROM gpx_file_tags AS gft WHERE gft.gpx_id = gpx_files.id AND gft.tag = ?)" - conditions << @tag + + files = Tracetag.find_all_by_tag(params[:tag]).collect { |tt| tt.gpx_id } + conditions[0] += " AND gpx_files.id IN (#{files.join(',')})" end conditions[0] += " AND gpx_files.visible = 1"