我有一个通过游标运行的查询,它很慢,因为它监视很多字段。
我想每周自动运行此查询。大约需要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
答案 0 :(得分:0)
如果您使用的是SQL Server,那么使用SQL Agent安排作业肯定是可行的方法。 正如评论中所述,查询的2分钟时间不是很长。只需将工作安排在系统没有大量使用的时候。
但是如果你想转向更现代的SQL实现,我会寻求实现基于集合的数据操作而不是游标。这可能会也可能不会改善查询时间,但我肯定会为生产服务器做些什么。
游标通常被视为生产操作,但是,在某些情况下,你可以证明它们是合理的。