From 988bd56160a478c42b492375a14cf0bae28bf42e Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Tue, 8 Jan 2013 17:19:26 +0000 Subject: [PATCH] Add a geometry index to project_nodes, and ensure various other combos are unique. --- db/migrate/20130108165457_add_more_indexes.rb | 12 ++++++++++++ db/schema.rb | 9 ++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20130108165457_add_more_indexes.rb diff --git a/db/migrate/20130108165457_add_more_indexes.rb b/db/migrate/20130108165457_add_more_indexes.rb new file mode 100644 index 0000000..003bc54 --- /dev/null +++ b/db/migrate/20130108165457_add_more_indexes.rb @@ -0,0 +1,12 @@ +class AddMoreIndexes < ActiveRecord::Migration + def change + add_index :project_nodes, :geom, spatial: true + add_index :project_nodes, [:project_id, :osm_id], unique: true + add_index :project_way_nodes, [:project_id, :way_id, :sequence_id], + unique: true, name: "index_project_way_nodes_on_project_way_seq_ids" + add_index :project_ways, [:project_id, :osm_id], unique: true + add_index :project_relation_members, [:project_id, :relation_id, :sequence_id], + unique: true, name: "index_project_relation_members_on_project_rel_seq_ids" + add_index :project_relations, [:project_id, :osm_id], unique: true + end +end diff --git a/db/schema.rb b/db/schema.rb index c6de7a6..c17d96e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20120620135238) do +ActiveRecord::Schema.define(:version => 20130108165457) do create_table "admins", :force => true do |t| t.string "email", :default => "", :null => false @@ -57,7 +57,9 @@ t.text "status" end + add_index "project_nodes", ["geom"], :name => "index_project_nodes_on_geom", :spatial => true add_index "project_nodes", ["osm_id"], :name => "index_project_nodes_on_osm_id" + add_index "project_nodes", ["project_id", "osm_id"], :name => "index_project_nodes_on_project_id_and_osm_id", :unique => true add_index "project_nodes", ["project_id"], :name => "index_project_nodes_on_project_id" create_table "project_relation_members", :force => true do |t| @@ -69,6 +71,8 @@ t.integer "sequence_id", :null => false end + add_index "project_relation_members", ["project_id", "relation_id", "sequence_id"], :name => "index_project_relation_members_on_project_rel_seq_ids", :unique => true + create_table "project_relations", :force => true do |t| t.integer "project_id", :null => false t.integer "osm_id", :limit => 8, :null => false @@ -81,6 +85,7 @@ end add_index "project_relations", ["osm_id"], :name => "index_project_relations_on_osm_id" + add_index "project_relations", ["project_id", "osm_id"], :name => "index_project_relations_on_project_id_and_osm_id", :unique => true add_index "project_relations", ["project_id"], :name => "index_project_relations_on_project_id" create_table "project_users", :force => true do |t| @@ -97,6 +102,7 @@ end add_index "project_way_nodes", ["node_id"], :name => "index_project_way_nodes_on_node_id" + add_index "project_way_nodes", ["project_id", "way_id", "sequence_id"], :name => "index_project_way_nodes_on_project_way_seq_ids", :unique => true add_index "project_way_nodes", ["project_id"], :name => "index_project_way_nodes_on_project_id" add_index "project_way_nodes", ["way_id"], :name => "index_project_way_nodes_on_way_id" @@ -112,6 +118,7 @@ end add_index "project_ways", ["osm_id"], :name => "index_project_ways_on_osm_id" + add_index "project_ways", ["project_id", "osm_id"], :name => "index_project_ways_on_project_id_and_osm_id", :unique => true add_index "project_ways", ["project_id"], :name => "index_project_ways_on_project_id" create_table "projects", :force => true do |t|