我有一些报告,为我的数据库中的每个用户执行一些耗时的数据计算,结果为每个用户计算10到20个新记录。为了提高报告响应速度,创建了一个夜间作业来运行计算并将结果转储到数据库中的快照表。它只针对活跃用户运行。SQL Server优化大型更改表
因此,对于50k用户,其中30k是活动的,作业“更新”300k到大型快照表中的600k记录。它当前使用的方法是删除给定用户的所有以前的记录,然后插入新的集合。表中没有PK,只有业务键用于分组数据。
所以我的问题是,当每天晚上删除和添加多达600k条记录时,是否有技术来优化表来处理这个问题?例如,由于可以根据需要重新创建数据,有没有办法在这些更改生效时禁用表的日志记录?
UPDATE:
的一个问题是,我不能在批处理做到这一点,因为脚本的工作方式,它在一次检查一个用户,所以它着眼于用户,删除先前10-20纪录,并插入一组新的10-20条记录。它一遍又一遍地做这个。我担心事务日志将耗尽空间或可能发生其他性能问题。我想配置表格,现在担心数据保存或其他可能会降低速度的项目。我不能删除索引以及所有这些,因为人们正在同时访问该表并更新它。
MERGE太棒了。不知道这一点。谢谢。 – CodeGrue