调度慢查询

时间:2018-05-24 16:36:57

标签: tsql

我有一个通过游标运行的查询,它很慢,因为它监视很多字段。

我想每周自动运行此查询。大约需要2分钟。所以你认为工作安排?或者发送电子邮件的查询会怎么做?或者你还有其他选择吗?谢谢!!!

在下面的查询中,它仅检查L_name,但我还有50个字段。

SELECT 
a.invnumber, a.Accnum,
i.audit_field, i.field_after, name, i.maxdate AS Modified_date
FROM 
#Iam a
JOIN 
(SELECT
     a.invnumber, a.Accnum, a.field_after, audit_field, maxdate
 FROM
     #Iam_audit a WITH(nolock)
 INNER JOIN
     (SELECT 
          Accnum, invnumber, MAX(Modified_Date) AS maxdate
      FROM
          #Iam_audit a2 WITH(nolock)
      WHERE
          a2.Audit_field = 'name'
      GROUP BY
          Accnum, invnumber) AS aa ON aa.Accnum = a.Accnum 
                                   AND aa.invnumber = a.invnumber 
                                   AND aa.maxdate = a.modified_Date
WHERE
    a.Audit_Field = 'name') i ON i.audit_field = 'name'  
                              AND i.Accnum = a.Accnum 
                              AND i.invnumber = a.invnumber  
                              AND a.name <> i.field_after

1 个答案:

答案 0 :(得分:0)

如果您使用的是SQL Server,那么使用SQL Agent安排作业肯定是可行的方法。 正如评论中所述,查询的2分钟时间不是很长。只需将工作安排在系统没有大量使用的时候。

但是如果你想转向更现代的SQL实现,我会寻求实现基于集合的数据操作而不是游标。这可能会也可能不会改善查询时间,但我肯定会为生产服务器做些什么。

游标通常被视为生产操作,但是,在某些情况下,你可以证明它们是合理的。