考虑以下情况,
我有 表A, 表B和 表C.
在上面这些表格中,需要按照常规时间间隔的各列中的计算公式更新其记录。 (例如24小时一次。)
所以我尝试了存储过程,并通过编写查询来更新记录,从而在作业调度程序中创建。
当我执行该过程时,由于每个表中有5000条记录,因此需要15到20分钟才能执行并完成SQL Server管理工作室的挂起。
因此,我将更新过程分为3个单独的过程,并根据记录计数记录每个过程执行1分钟的时间。
即使优化了程序,
我的数据库计划信息:
我正在开发租赁系统产品。 在那个房间信息将在表1中提供。 租用的客户信息将在表2中提供。 租用的房间及其租户发票将在表3中提供 租用的房间及其租户收据将在表4中提供
步骤1:需要计算所有租户的总到期金额,以天为单位的会费,以及用于在表记录中更新的while循环中每张发票的月数。
步骤2:需要定期计算每张发票的总滞纳金。 (注意:延迟费用将根据同一发票的每日计算基础而有所不同。)
因此,我将所有租约的公共表存储在表5中,并且每天都有各自的计算值。 为此,我创建了一个用于计算所有数据的公共存储过程,并根据用户定义的函数,它将更新到表5中。
我从表5中获取所有报告和网格。
问题陈述: 即使我已经优化了程序,当我执行它时,大约需要大约150秒。
问题:如何实现此操作的事务以及如何通过避免同一表中的任何死锁和其他数据同时访问来以正确的方式进行操作?
答案 0 :(得分:0)
您可以转到以下链接更改SQL Server管理工作室的超时会话
我建议您通过压缩ldf和mdf文件尽可能地保持驱动器空间畅通。
答案 1 :(得分:0)
如果你正在使用光标我有这个建议
尝试将其更改为加入(如果可能)
如果您正在使用"交易"并且它离开你的光标,如果它没有损坏你的数据,试着将它带入光标并在结束查询后提交光标