我有一些報告,爲我的數據庫中的每個用戶執行一些耗時的數據計算,結果爲每個用戶計算10到20個新記錄。爲了提高報告響應速度,創建了一個夜間作業來運行計算並將結果轉儲到數據庫中的快照表。它只針對活躍用戶運行。SQL Server優化大型更改表
因此,對於50k用戶,其中30k是活動的,作業「更新」300k到大型快照表中的600k記錄。它當前使用的方法是刪除給定用戶的所有以前的記錄,然後插入新的集合。表中沒有PK,只有業務鍵用於分組數據。
所以我的問題是,當每天晚上刪除和添加多達600k條記錄時,是否有技術來優化表來處理這個問題?例如,由於可以根據需要重新創建數據,有沒有辦法在這些更改生效時禁用表的日誌記錄?
UPDATE:
的一個問題是,我不能在批處理做到這一點,因爲腳本的工作方式,它在一次檢查一個用戶,所以它着眼於用戶,刪除先前10-20紀錄,並插入一組新的10-20條記錄。它一遍又一遍地做這個。我擔心事務日誌將耗盡空間或可能發生其他性能問題。我想配置表格,現在擔心數據保存或其他可能會降低速度的項目。我不能刪除索引以及所有這些,因爲人們正在同時訪問該表並更新它。
MERGE太棒了。不知道這一點。謝謝。 – CodeGrue