2016-11-24 28 views
0

在數據庫中創建了一個非規格化表(排序總結表),希望它能夠提高性能。我有什麼選擇將數據插入非規格化表

  • 此表將被清理日常使用批處理作業(HardDelete)
  • 需要此表沒有約束(因爲它可能會影響性能)
  • 速度將是主要關注

背景是,最初,有一個搜索行動通過大尺寸的表(稱爲tableA),因爲總是有新的插入,所以表成長爲大。 現在每當有新插入到tableA中時,我們都會插入到這個newTable中,並且搜索將會反對這個newTable,並且由於這個newTable將每天都有batchjob硬刪除,所以大小將是可控的。

現在我想知道我有什麼選擇將數據插入到這個newTable中。我目前的選擇是將觸發器放在tableA上或以正常的方式(通過服務器代碼在插入TableA後將數據插入到這個新表中)。有沒有其他的選擇可以幫助提高速度?

+2

另一種可能適用或不適合您的用例的選項是索引視圖。 https://www.brentozar.com/archive/2013/11/what-you-can-and-cant-do-with-indexed-views/ – mendosi

回答

0

由於數據已經到達數據庫,觸發器將比將其添加到服務器端代碼更快。你最關心的事情是交易(如果觸發器失敗會發生什麼?)以及觸發器的維護(如果你問我,觸發器是很難維持的)。

對於原始插入速度,您可以檢查您的表鎖定設置,禁用讀取安全性並禁用所有約束。

相關問題