Планирование медленного запроса - PullRequest
0 голосов
/ 24 мая 2018

У меня есть запрос, который выполняется через курсоры, и он медленный, потому что он отслеживает множество полей.

Я хотел бы автоматически запускать этот запрос каждую неделю.это займет около 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 голосов
/ 24 мая 2018

Если вы используете SQL Server, то планирование работы с помощью агента SQL, безусловно, будет правильным решением.Как указано в комментариях, 2 минуты не очень много времени для запроса.Просто запланируйте работу на время, когда система не будет интенсивно использоваться.

Но если вы хотите перейти к более современной реализации SQL, я бы хотел реализовать операции с данными на основе множеств, а не курсоры.Это может или не может улучшить синхронизацию запросов, но я определенно хотел бы обратить внимание на работу с производственным сервером.

Курсоры обычно игнорируются для производственных операций, хотя, возможно, вы сможете их обосновать внекоторые случаи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...