我有2個模型 - Question
和Tag
- 它們之間有一個HABTM,它們共享一個連接表questions_tags
。如何清理我的join_table並刪除重複的條目?
盛宴你的眼睛在這個BADBOY:
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"
請注意,您可能必須手動重新創建舊錶所具有的任何索引。 – 2013-03-13 00:53:01
有一個'psql'命令來做到這一點?重新創建索引....就是。 – marcamillion 2013-03-13 00:53:49
完美...這工作。現在我下降到只有148K記錄。非常感謝!現在......問題是......我將來如何防止這種情況發生。 – marcamillion 2013-03-13 01:18:43