2016-12-14 103 views
4

我創建了一個查詢,其中我從其他表中選擇的結果插入到空表中。插入從選擇性能SQL Server

選擇本身需要〜20分鐘(30個M行,120列和 「哪裏」 的條件下,它的細),但插入成需要約1小時

你有什麼建議如何改善它?

我所做的就像下面的例子。

Insert Into tableA 
Select * 
From TableB 

感謝您的幫助!

回答

2

刪除所有的TableA指標,然後再插入:

INSERT INTO tableA 
SELECT * FROM TableB 

指標是衆所周知的INSERT語句慢下來。

+0

我已經完成了這項工作。但它仍然需要一個小時才能插入.. –

+0

您使用哪種rdbms? MySQL或SQL服務器? @Ric_R – sagi

+0

SQL Server。謝謝 –

0

在已經提到的索引之下,您可以檢查TableA是否具有已定義的約束(主鍵,外鍵等),因爲約束通常由索引實現。

此外,您可以檢查TableA上是否有觸發器。 另一個測試是將TableB導出/卸載到一個文件,例如TableB.txt,然後將文件TableB.txt導入/載入到TableA中。 (對不起,我不知道SQL Server的語法)。

要檢查的另一項可能是事務日誌。也許有可能將記錄更改爲BULK_LOGGED請參閱: Disable Transaction Log

+0

約束和觸發器不應該在執行SELECT時觸發'。約束和觸發器只能在DML事件('INSERT,UPDATE,DELETE')上運行。 –