Add some extra indexes to the changesets table.

This commit is contained in:
Tom Hughes 2009-04-20 14:54:05 +00:00
parent f23e982e72
commit 869da5e228
2 changed files with 28 additions and 0 deletions

View file

@ -0,0 +1,13 @@
class AddMoreChangesetIndexes < ActiveRecord::Migration
def self.up
add_index "changesets", ["created_at"], :name => "changesets_created_at_idx"
add_index "changesets", ["closed_at"], :name => "changesets_closed_at_idx"
add_index "changesets", ["min_lat","max_lat","min_lon","max_lon"], :name => "changesets_bbox_idx", :method => "GIST"
end
def self.down
remove_index "changesets", :name => "changesets_bbox_idx"
remove_index "changesets", :name => "changesets_closed_at_idx"
remove_index "changesets", :name => "changesets_created_at_idx"
end
end

View file

@ -158,6 +158,21 @@ module ActiveRecord
def interval_constant(interval)
"'#{interval}'::interval"
end
def add_index(table_name, column_name, options = {})
column_names = Array(column_name)
index_name = index_name(table_name, :column => column_names)
if Hash === options # legacy support, since this param was a string
index_type = options[:unique] ? "UNIQUE" : ""
index_name = options[:name] || index_name
index_method = options[:method] || "BTREE"
else
index_type = options
end
quoted_column_names = column_names.map { |e| quote_column_name(e) }.join(", ")
execute "CREATE #{index_type} INDEX #{quote_column_name(index_name)} ON #{quote_table_name(table_name)} USING #{index_method} (#{quoted_column_names})"
end
end
end
end