Оператор SQL DB2 выполняется очень медленно только в пределах блока BEGIN END - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть большой сценарий SQL, который содержит блок BEGIN-END, который состоит в перестройке Проблема в том, что когда я запускаю каждый оператор по отдельности, операторы выполняются нормально. Но когда я помещаю операторы в блок, производительность становится ужасной (от ~ 1 млн. Читаемых / с строк до 1000 читаемых / с)

Мой блок выглядит так:

BEGIN
  DECLARE i BIGINT;
  --some JOIN/UPDATE statements
  --count lines
  WHILE(lines>0) DO
    --some joins that rebuild a hierarchy
    --count lines again
  END WHILE
END

Медленное выполнение оператора - это JOIN внутри цикла while. Когда я сокращаю это утверждение и помещаю первые СОЕДИНЕНИЯ вне НАЧАЛА КОНЕЦ, все работает ОК

--some JOIN/UPDATE statements
BEGIN
  DECLARE i BIGINT;
  --count lines
  WHILE(lines>0) DO
    --some joins that rebuild a hierarchy
    --count lines again
  END WHILE
END

Вышеупомянутое утверждение получило хорошую производительность Я просто хотел бы знать, почему факт выполнения этих операторов JOIN / UPDATE блока может повлиять на производительность?

Спасибо,

...