indexes.rake
731 Bytes
namespace :db do
namespace :indexes do
desc "Prints a list of unindexed foreign keys so you can index them"
task :missing => :environment do
indexes = {}
conn = ActiveRecord::Base.connection
conn.tables.each do |table|
indexed_columns = conn.indexes(table).map { |i| i.columns }.flatten
conn.columns(table).each do |column|
if column.name.match(/_id$/) && !indexed_columns.include?(column.name)
indexes[table] ||= []
indexes[table] << column.name
end
end
end
puts "Foreign Keys:"
indexes.sort.each do |table, columns|
puts columns.map { |c| "\s\sadd_index '#{table}', '#{c}'\n"}
end
end
end
end