Оптимизация Sybase SQL Query - PullRequest
2 голосов
/ 07 июня 2011

Есть ли способ оптимизировать следующий запрос:

UPDATE myTable
SET Calculation =
  (SELECT MAX(Calculation)
   FROM myTable T
   WHERE T.Id = myTable.Id
     AND T.Flag='N')
WHERE Calculation='NA'
  AND Flag='Y'

где myTable имеет прибл. 4 миллиона строк? На самом деле первый не NULL будет делать эту работу (SYBASE ASE 15.0.2).

1 Ответ

0 голосов
/ 01 февраля 2013

Проверьте план запроса, он должен использовать отложенное обновление, для обновления которого требуется больше времени.Запрос, предложенный Майклом, должен работать лучше.

Запоминание ниже пунктов, которые требуют отложенного обновления

  • Обновления, использующие самостоятельные объединения

  • Обновления столбцов, используемых для самоссылочной целостности

  • Обновления таблицы, на которые есть ссылки в коррелированном подзапросе

Спасибо ..

...