我已經得到了下面的表格,其中translation
是空的,我試圖填補:如何從其它表填充表的外鍵
translation {
id
translated
language_id
template_id
}
language {
id
langname
langcode
}
template {
id
tplname
source
domain
total
}
源數據來填充translation
是一個臨時的我已經從外部CSV文件填充表:
tmp_table {
id
translated
langname
tplname
source
domain
}
我想要做的是填補translation
與值從tmp_table
。該translated
場可以直接複製,但我不太清楚如何獲取正確的language_id
(tmp_table.langname可以用來確定language.id)和template_id
(tmp_table.tplname,tmp_table.source,tmp_table.domain可以一起用於確定template.id)。
這可能是一個微不足道的問題,但我很新的SQL和不知道的最好的查詢應該是填充translation
表什麼。有任何想法嗎?
謝謝!不過,我對索引部分不太清楚。從Django模型生成的目標表,從pgadmin3看着它,它看起來像它得到了在每個外鍵索引創建(如:'CREATE INDEX translation_language_id的翻譯使用的B樹(LANGUAGE_ID);') - 你的意思是,在爲了提高插入操作的性能,我應該在插入查詢之前刪除所有這些索引,然後用相同的'CREATE INDEX [']查詢再次生成它們中的每一個? – 2012-02-26 18:11:29
@DavidPlanella:的確如此。這也是安全的,因爲查詢的性質遵守外鍵規則。如果您擔心併發操作,請在一次事務中完成所有操作。如果您不確定這會更快,只需在數據庫副本中運行測試即可。 [EXPLAIN ANALYSE](http://www.postgresql.org/docs/current/interactive/sql-explain.html)可用於計時。 – 2012-02-27 11:34:00