私は2つのモデルを持っています-Question
そしてTag
-それらの間にHABTMがあり、それらは結合テーブルを共有していますquestions_tags
。
このバッドボーイにあなたの目を楽しませてください:
1.9.3p392 :011 > Question.count
(852.1ms) SELECT COUNT(*) FROM "questions"
=> 417
1.9.3p392 :012 > Tag.count
(197.8ms) SELECT COUNT(*) FROM "tags"
=> 601
1.9.3p392 :013 > Question.connection.execute("select count(*) from questions_tags").first["count"].to_i
(648978.7ms) select count(*) from questions_tags
=> 39919778
結合テーブルに多数の重複レコードが含まれていると想定していquestions_tags
ます。そうでない場合、なぜこれほど大きくなるのかわかりません。
uniq
その結合テーブルをクリーンアップして、コンテンツのみが含まれるようにするにはどうすればよいですか?または、重複するレコードがそこにあるかどうかを確認するにはどうすればよいですか?
編集1
私はPostgreSQLを使用しています。これはjoin_tableのスキーマです。questions_tags
create_table "questions_tags", :id => false, :force => true do |t|
t.integer "question_id"
t.integer "tag_id"
end
add_index "questions_tags", ["question_id"], :name => "index_questions_tags_on_question_id"
add_index "questions_tags", ["tag_id"], :name => "index_questions_tags_on_tag_id"