powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Медленный insert в цикле
8 сообщений из 8, страница 1 из 1
Медленный insert в цикле
    #39271085
GSar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Есть запрос следующего вида

begin
for k in 0 .. 9 loop

insert into new_table

select t1.date, field1, sum1, sum2

from t1

inner join (

select date, field1, sum(field2) sum1
from t2
where date = to_date('01.02.2016','dd.mm.yyyy') + k

) t2 on t1.field1 = t2.field1


left join (

select date, field1, sum(field2) sum2
from t3
where date = to_date('01.02.2016','dd.mm.yyyy') + k

) t2 on t1.field1 = t3.field1

;
commit;
end loop;
end;


То есть нужно циклом пройтись по диапазону дат с 1-го по 10-е февраля.
Без цикла этот запрос работает быстро и вставляет значения в таблицу, но в цикле даже с одной итерацией справиться не может.

В чем может быть дело и как это исправить?
Заранее спасибо!
...
Рейтинг: 0 / 0
Медленный insert в цикле
    #39271097
GSarВ чем может быть делопровидение намекает что для вставки цикл не нужен.
...
Рейтинг: 0 / 0
Медленный insert в цикле
    #39271116
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Медленный insert в цикле
    #39271125
GSar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Объединяемые таблицы слишком большие, без цикла запрос по всему диапазону дат не отрабатывает.

И суть вопроса скорее в том, почему при замене k на любое целое число, вставка осуществляется почти моментально, а если же в коде использовать именно переменную (даже без цикла), то запрос зависает.
...
Рейтинг: 0 / 0
Медленный insert в цикле
    #39271133
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GSarОбъединяемые таблицы слишком большие, без цикла запрос по всему диапазону дат не отрабатывает.

Отрабатывает.
И суть вопроса скорее в том, почему при замене k на любое целое число, вставка осуществляется почти моментально, а если же в коде использовать именно переменную (даже без цикла), то запрос зависает.
А суть ответа в том, что вам надо подучить SQL.

Конечно, кроме этого, совершенно необходимо узнать про Oracle Wait Interface, трассировку (10046/tkprof etc), как посмотреть и интерпретировать планы и почему Oracle оценивает стоимость выполнения так, как он оценивает.

http://www.sql.ru/forum/1221655/posovetuyte-novichku
...
Рейтинг: 0 / 0
Медленный insert в цикле
    #39271162
Jonhson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<мимо пробегая>
а коммит внутри цикла то тебе зачем?
</мимо пробегая>
...
Рейтинг: 0 / 0
Медленный insert в цикле
    #39271684
Диб**лойд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зачем loop?
Чем BETWEEN не угодил? Религия не позволяет использовать?

Вместо
date = to_date('01.02.2016','dd.mm.yyyy') + k

Надо
date BETWEEN to_date('01.02.2016','dd.mm.yyyy') AND to_date('10.02.2016','dd.mm.yyyy')
...
Рейтинг: 0 / 0
Медленный insert в цикле
    #39271731
Жоска
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GSarИ суть вопроса скорее в том, почему при замене k на любое целое число, вставка осуществляется почти моментально, а если же в коде использовать именно переменную (даже без цикла), то запрос зависает.
Может в таблице есть одноименное поле "K"?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Медленный insert в цикле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]