减少行数

本文关键字: | 更新日期: 2023-09-27 17:51:02

在我的应用程序中,我有一个SQL Server 2008表Employee Swipedaily_Tbl与11列其中插入了员工的日常刷卡。

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

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

我是一个新的SQL Server和DBA,谁能建议是否有一个更好的主意?

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

减少行数

要么使用分区表,这样在大容量数据库表中插入新数据不会影响其性能,要么使用脚本每月使用SQL Job备份数据并从现有数据中删除,但如果您使用Identity列,您可能需要在脚本中进行一些更改,以避免新旧数据冲突

    创建一个相同的表
  1. 创建一个SQL脚本来复制所有比给定日期早的数据(例如今天的日期),并从表中删除
  2. 配置SQL代理作业,以便在每个任务的第一天执行该脚本月

然而,有了适当的索引,你应该可以在更长的时间内将原始表中的数据联系起来——365天× 8000名员工× 2次扫描= 584万条记录,对于SQL服务器来说,处理这些记录并不太多。

Raj

您可以创建另一个与Swipedaily_Tbl(11 columns)相同的表,并添加一个列,该列将告诉何时将特定记录插入备份表中。然后,您可以创建一个脚本来备份超过一个月的数据,并从原始表中删除这些数据。然后,您可以创建一个批处理或控制台应用程序,可以计划在月底运行。

希望有帮助。

谢谢。

这取决于您对"旧"数据的需求。就我个人而言,我强烈考虑使用表分区。参见:http://technet.microsoft.com/en-us/library/dd578580 (v = sql.100) . aspx

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

通常情况下,这取决于情况。本地分区需要SQL Server的企业版,但是有一些方法可以绕过它(尽管不是很干净),就像这样。

如果你有企业版的SQL Server,我会认真考虑一下分区(在这里的一些其他答案中有很好的链接),但是我不会按月划分,可能是按季度或半年划分,因为每天两次扫描每月不到50万行,而一个150 - 300万行的表对于SQL Server来说不是那么多。

如果您在这个时间点上遇到性能问题,可能是几个月的数据,您是否检查了对表的最频繁的查询并确保它们使用了索引?

相关文章:
  • 没有找到相关文章