2013-01-08 130 views
0

在我的應用程序中,我有一個SQL Server 2008表Employee Swipedaily_Tbl,其中有11列 ,其中插入了員工日常滑動。減少行數

而且我在公司裏有大約8000名員工。這意味着每天至少會創建16000行..

我打算刪除一個月末的所有行並將它們保存到另一個表以增加性能......或返回從前一個月的數據作爲dmb文件從應用程序本身

因爲我是SQL Server和DBA的新手,任何人都可以建議是否有更好的主意?

我可以從應用程序創建轉儲文件嗎?

+0

什麼是啞文件? – Raj

+0

我的意思是.dmb文件 –

+0

@Raj:我假設啞文件實際上是一個**(數據)轉儲**文件... :-) –

回答

1
  1. 創建一個相同的表
  2. 創建一個SQL腳本複製所有大於給定日期 (說今天的日期),以該表較舊的數據,並從表中刪除
  3. 配置SQL代理作業執行該腳本每 月1日

然而,在適當的索引,你應該確定reatian數據在原始表本身的時間要長得多 - 365天×8000名員工×2個揮筆= 584萬條記錄,對於SQL服務器來說不是太多。

拉吉

1

您可以創建另一個表增加一列時,特定記錄的備份表插入會告訴相同Swipedaily_Tbl(11 columns)。然後,您可以創建一個腳本來備份超過一個月的數據,並從orignal表中刪除該數據。然後,您可以創建批量或控制檯應用程序,該應用程序可以安排在月末運行。

希望得到這個幫助。

謝謝。

2

無論是使用Partitioning Table所以在插入體積巨大的數據庫表中的新數據不會影響其性能或使用腳本來每月明智的備份數據,使用SQL工作,並從現有的刪除,但如果您使用的標識列,您可能需要一些改變腳本以避免舊數據和新數據發生衝突。

1

由於太常見了,這取決於。本地分區需要SQL Server的企業版,但是有一些解決方法(雖然不是很乾淨),比如this

如果你確實有SQL Server的企業版,我會認真考慮分區(在這裏有一些其他的答案中有很好的鏈接),但是我不會每月分裂,也許是季度或者半年一次,因爲每天兩次刷卡的時間少於每月五十萬行,以及1.5-3百萬行。行表對於SQL服務器來說並不那麼重要。

如果您在此時可能會遇到性能問題(可能有幾個月的數據),您是否查看了最頻繁的查詢,並確保它們使用索引?