У меня есть SQL-скрипт, который вставляет около 8000 строк в переменную TABLE.
После вставки в эту переменную я использую цикл WHILE, чтобы зациклить эту таблицу и выполнить другие операции. Этот цикл, возможно, содержит 60 строк кода.
Если я запускаю переменную TABLE и вставляю часть скрипта без цикла while, это занимает около 5 секунд. Это здорово.
Однако, если я запускаю весь скрипт, это займет около 15 минут.
Вот что интересно, а что я не могу понять:
Когда я запускаю весь сценарий, я не вижу никаких операторов печати, пока в сценарии не будет много минут.
Затем, когда он выясняет, что делать (предположительно), он запускает вставки в таблицу var, выполняет цикл, и все это происходит довольно быстро.
Затем, к концу цикла или даже после него, он сидит и висит еще много минут. Наконец, он пропускает последние несколько строк сценария, которые идут после цикла.
Я могу учесть все время, затраченное на вставку, а затем все время, затраченное на цикл. Но я не могу понять, почему он так долго зависает до и в конце сценария.
для ударов, я добавил оператор GO после вставки в временную таблицу, и все до этого момента работало так, как вы ожидаете; однако я не могу этого сделать, потому что мне нужна эта переменная, и оператор GO, очевидно, убивает эту переменную.
Полагаю, я перестану использовать переменную таблицы и перейду к реальной таблице, чтобы я мог выполнить GO, но мне бы очень хотелось знать, что здесь происходит.
Есть какие-нибудь мысли о том, что SQL Server в течение этого времени?
Спасибо!