减少行数

时间:2013-01-08 11:08:16

标签: c# sql-server sql-server-2008

在我的应用程序中,我有一个包含11列的SQL Server 2008表Employee Swipedaily_Tbl 插入员工每日滑动的位置。

我公司有大约8000名员工。这意味着每天至少会创建16000行..

我计划在一个月末删除所有行并将它们保存到另一个表中以提高性能......或者将上个月的数据备份为来自应用程序本身的dmb文件

由于我是SQL Server和DBA的新手,有人可以建议是否有更好的想法吗?

我可以从应用程序创建转储文件吗?

5 个答案:

答案 0 :(得分:2)

使用Partitioning Table,因此在大容量数据库表中插入新数据不会影响其性能,或者使用脚本每月使用SQL作业备份数据并从现有数据中删除但是如果您使用的是Identity列可能需要对脚本进行一些更改以避免旧数据和新数据发生冲突。

答案 1 :(得分:1)

  1. 创建一个相同的表
  2. 创建一个SQL脚本以复制早于给定日期的所有数据 (比如今天的日期)到那张桌子并从你的桌子上删除
  3. 配置SQL代理作业以在每个脚本的第1个脚本上执行该脚本 月
  4. 但是,通过正确的索引编制,您可以更长时间地恢复原始表本身中的数据 - 365天x 8000员工x 2 swipes = 584万条记录,而不是SQL服务器处理的太多。

    拉​​吉

答案 2 :(得分:1)

您可以创建另一个与Swipedaily_Tbl(11 columns)相同的表,并添加一列,以指示何时在备份表中插入特定记录。然后,您可以创建一个脚本,用于备份超过一个月的数据,并从orignal表中删除该数据。然后,您可以创建可以安排在月末运行的批处理或控制台应用程序。

希望得到这个帮助。

感谢。

答案 3 :(得分:1)

这取决于您对“旧”数据的要求。 就个人而言,我强烈建议使用表分区。 请参阅:http://technet.microsoft.com/en-us/library/dd578580(v=sql.100).aspx

将所有记录保存在表格中;这将使查看当前和历史数据的查询同时更简单,也可能更便宜。

答案 4 :(得分:1)

通常,这取决于。本机分区需要SQL Server的企业版,但是有很多方法(尽管不是很干净),如this

如果你有SQL Server的企业版,我会认真看看分区(在这里的一些其他答案中很好地链接),但我不会按月拆分,可能是季度或半 - 每年两次刷卡每月不到50万行,并且1.5-3密耳。对于SQL服务器来说,行表不是那么多。

如果您在此时遇到性能问题,可能需要几个月的数据,那么您是否查看过最常见的查询表并确保他们使用的是索引?