空のテーブルに他のテーブルのselectの結果を挿入するクエリを作成しました。Select Performance From SQL Server
これは自体を選択〜1時間を取るに〜20分かかる(30 M行、120列と "" の条件を、そしてそれは大丈夫です)、しかし挿入。
改善方法のご提案はありますか?
私が行ったことは、以下の例のようです。
Insert Into tableA
Select *
From TableB
あなたの助けをお待ちしております。
空のテーブルに他のテーブルのselectの結果を挿入するクエリを作成しました。Select Performance From SQL Server
これは自体を選択〜1時間を取るに〜20分かかる(30 M行、120列と "" の条件を、そしてそれは大丈夫です)、しかし挿入。
改善方法のご提案はありますか?
私が行ったことは、以下の例のようです。
Insert Into tableA
Select *
From TableB
あなたの助けをお待ちしております。
ドロップTableA
上のすべてのインデックス、再度挿入します
INSERT INTO tableA
SELECT * FROM TableB
インデックスは、挿入文を遅くすることが知られています。
上記のインデックスの下では、制約がインデックスで実装されることが多いため、TableAに制約が定義されているかどうか(主キー、外部キーなど)を確認できます。
また、TableAにトリガがあるかどうかを確認できます。 別のテストは、TableBをファイルにエクスポート/アンロードすることです。 TableB.txtファイルを開き、TableB.txtファイルをTableAにインポート/ロードします。 (申し訳ありませんが、SQL Serverの構文は分かりません)。
もう1つの確認項目は、トランザクションログです。 BULK_LOGGEDにログを変更することはおそらく可能です: Disable Transaction Log
制約とトリガは、 'SELECT '。制約とトリガはDMLイベント(INSERT、UPDATE、DELETE)でのみ実行されます。 –
私はそれを行っています。しかし、それを挿入するにはまだ1時間かかります。 –
あなたはどんなrdbmsを使用していますか? MySQLまたはSQL Server? @Ric_R – sagi
SQL Server。ありがとう –