Tsql 安排慢速查询

Tsql 安排慢速查询,tsql,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

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

我想每周自动运行此查询。大约需要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

如果您使用的是SQL Server,那么使用SQL代理安排作业肯定是一种可行的方法。 如评论中所述,2分钟对于查询来说不是很长的时间。只需将作业安排在系统未被大量使用的时间

但是,如果您想转向更现代的SQL实现,我希望实现基于集合的数据操作,而不是游标。这可能会改善查询时间,也可能不会,但对于生产服务器,我肯定会考虑这样做


在生产操作中,游标通常被看不起,不过,在某些情况下,您可以证明它们是正确的。

2分钟并不是什么大问题。所以,当然,我认为安排它会很好。尽管如此,我建议如果代码有微小的改进机会,那么就朝着这个方向考虑。请确认SQL SERVER版本。谢谢。我想是的。那我就和乔布斯一起去!你说得对。游标不是最好的用法。。但是对于动态查询来说,这很好!