У меня есть большой сценарий 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 блока может повлиять на производительность?
Спасибо,