重寫也許。一種硬件解決方案是確保您的數據庫臨時表在一個'快速'驅動器上運行,也許是一個固態硬盤(SSD),或者可以在內存中進行全部管理。
我的猜測是這個'解決方案'是由一個掌握和依賴於電子表格的人開發的,一個對'規範化'數據庫可能不太瞭解的人 - 如何構建和填充表以保留數據以用於報告目的,這可能是BI商業智能軟件可以使用的複雜而適應性強的產品。
你沒有說'更新過程在哪裏'正在運行。更新過程是否作爲來自單獨計算機(桌面)的SQL腳本針對數據所在的服務器運行?這種方法可能會產生嚴重的瓶頸和開銷。如果是這樣,考慮作爲一個編譯存儲過程直接在服務器上運行整個更新過程作爲本地作業,繞過網絡和(多)遊標管理開銷。它可能有計劃的運行時間和受控優先級,完成非高峯時間的業務數據使用時間。
評估更新語句序列確實需要「提交」語句的頻率......保存在一堆提交行上可顯着提高總體更新時間。數據庫客戶端驅動程序軟件中可能存在一些設置,這可能會產生顯着差異。
是否可以將用於更新條件的查詢作爲靜態'視圖'分解出來,這又可以在多個更新語句之間共享?視圖可以保存在經常訪問的內存數據/查詢行中。在提交最佳之前,可能會進行性能調整以確定可以提交多少更新數據。
可能需要評估觸發器是否可用於替換批作業更新順序。您不會從數據表中使用的數據來自......這可能有助於決策制定。我不知道您是否可以將觸發器添加到從中收集數據的數據庫表中。如果是這樣,向多個表中添加一些觸發器並不會真正降低整個系統的性能,但可能會在該更新過程中節省大量時間。您可以嘗試用觸發器逐個替換更新語句,並查看結果是否與以前相同。根據相同的更新過程創建一個類似的臨時表,然後仔細測試觸發器是否將更新提供給臨時表可以替換單個更新語句。也許你可能有一種'數據倉庫'應用程序。查看如何設置表格的「明星」模式以保留用於報告的彙總業務數據可能很有用。
創建一個全面且緩存的「視圖」,通過查詢每天更新一次,反映更新可能是另一種探索方法。
將此信息添加到主文章中,並在可能的情況下進行適當標記。 – 2008-11-26 15:34:38