我創建了一個查詢,其中我從其他表中選擇的結果插入到空表中。插入從選擇性能SQL Server
這選擇本身需要〜20分鐘(30個M行,120列和 「哪裏」 的條件下,它的細),但插入成需要約1小時。
你有什麼建議如何改善它?
我所做的就像下面的例子。
Insert Into tableA
Select *
From TableB
感謝您的幫助!
我創建了一個查詢,其中我從其他表中選擇的結果插入到空表中。插入從選擇性能SQL Server
這選擇本身需要〜20分鐘(30個M行,120列和 「哪裏」 的條件下,它的細),但插入成需要約1小時。
你有什麼建議如何改善它?
我所做的就像下面的例子。
Insert Into tableA
Select *
From TableB
感謝您的幫助!
刪除所有的TableA
指標,然後再插入:
INSERT INTO tableA
SELECT * FROM TableB
指標是衆所周知的INSERT語句慢下來。
在已經提到的索引之下,您可以檢查TableA是否具有已定義的約束(主鍵,外鍵等),因爲約束通常由索引實現。
此外,您可以檢查TableA上是否有觸發器。 另一個測試是將TableB導出/卸載到一個文件,例如TableB.txt,然後將文件TableB.txt導入/載入到TableA中。 (對不起,我不知道SQL Server的語法)。
要檢查的另一項可能是事務日誌。也許有可能將記錄更改爲BULK_LOGGED請參閱: Disable Transaction Log
約束和觸發器不應該在執行SELECT時觸發'。約束和觸發器只能在DML事件('INSERT,UPDATE,DELETE')上運行。 –
我已經完成了這項工作。但它仍然需要一個小時才能插入.. –
您使用哪種rdbms? MySQL或SQL服務器? @Ric_R – sagi
SQL Server。謝謝 –