sql >> データベース >  >> RDS >> PostgreSQL

他のテーブルからテーブルの外部キーを設定する方法

    これは次のように簡略化できます:

    INSERT INTO translation (id, translated, language_id, template_id)
    SELECT tmp.id, tmp.translated, l.id, t.id
    FROM   tmp_table tmp
    JOIN   language l USING (langname)
    JOIN   template t USING (tplname, source, domain)
    ORDER  BY tmp.id
    

    ORDER BYを追加しました 厳密には必要ありませんが、その(または他の)方法でクラスター化されたデータを挿入すると、特定のクエリが利益をもたらす可能性があります。

    languageで一致する行が見つからない行が失われないようにしたい場合 またはtemplate LEFT JOINにします JOINの代わりに 両方のテーブル(language_idの場合) およびtemplate_id NULLにすることができます 。

    前編の質問 の下にすでにリストしたものに加えて :INSERTが巨大で、ターゲットテーブルの大部分を占める場合は、すべてのインデックスを削除する方がおそらく高速です。 ターゲットテーブルで、後でそれらを再作成します。インデックスを最初から作成することはたくさんです 行ごとに段階的に更新するよりも高速です。

    一意のインデックスはさらに制約として機能するため、後でルールを適用するか、そのままにしておくかを検討する必要があります。



    1. OracleDataPumpエクスポートファイル内のスキーマを決定する方法

    2. SQLデータ操作言語

    3. Initcapは4文字未満の単語をスキップします

    4. -bash:imp:コマンドが見つからない Oracle