Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Алгоритм работы курсора  [new]
sql_coder
Member

Откуда:
Сообщений: 234
К примеру есть запрос типа
for i in (select...) loop ... end loop
. Интересует следующий вопрос: курсор будет принимать значения в той же последовательности, что и результаты select или в какой-то иной?
6 авг 12, 13:56    [12967964]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм работы курсора  [new]
Lecter
Member

Откуда: Киев
Сообщений: 2032
sql_coder
К примеру есть запрос типа
for i in (select...) loop ... end loop
. Интересует следующий вопрос: курсор будет принимать значения в той же последовательности, что и результаты select или в какой-то иной?


order by?
6 авг 12, 14:00    [12968000]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм работы курсора  [new]
AmKad
Member

Откуда:
Сообщений: 5222
sql_coder,

В той же.
6 авг 12, 14:00    [12968001]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм работы курсора  [new]
-2-
Member

Откуда:
Сообщений: 15330
sql_coder,

order by
6 авг 12, 14:01    [12968002]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм работы курсора  [new]
mayton
Member

Откуда: loopback
Сообщений: 49823
В языке SQL порядок выдачи rows обеспечивает выражение ORDER BY.
В остальных случаях - порядок неопределён и завист от планов и
прочее.
6 авг 12, 14:01    [12968009]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм работы курсора  [new]
sql_coder
Member

Откуда:
Сообщений: 234
Lecter
sql_coder
К примеру есть запрос типа
for i in (select...) loop ... end loop
. Интересует следующий вопрос: курсор будет принимать значения в той же последовательности, что и результаты select или в какой-то иной?

order by?

да, сорри, с ордер баем
6 авг 12, 14:12    [12968110]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм работы курсора  [new]
pectopatop
Member

Откуда:
Сообщений: 765
Еще подобный вопрос (переиспользование темы):
- если выборка для курсора делается из удаленной базы с каким-нибудь супер-дорогим костом, и внутри цикла делаются немгновенные действия, то:
1) запрос для курсора когда выберет строки (и все ли враз? или порциями?) ?
2) или это зависит от плана запроса для курсора?
6 авг 12, 16:59    [12969608]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм работы курсора  [new]
pectopatop
Member

Откуда:
Сообщений: 765
Т.е. обязательно ли при первом вызове произойдет полный fetch всего курсора?
Или возможны вариации?
6 авг 12, 17:00    [12969614]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм работы курсора  [new]
mayton
Member

Откуда: loopback
Сообщений: 49823
Условно, есть фазы EXECUTE и FETCH. Если EXECUTE стоит дорого то ты будешь
долго ждать первой строки. Влияет на это логика курсора и план. Для оптимизации
есть хинты типа +FIRST_ROWS котрые как-бы ускоряют получение первой пачки
строк.
6 авг 12, 17:06    [12969654]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм работы курсора  [new]
agathis
Member

Откуда:
Сообщений: 94
mayton
Условно, есть фазы EXECUTE и FETCH. Если EXECUTE стоит дорого то ты будешь
долго ждать первой строки. Влияет на это логика курсора и план. Для оптимизации
есть хинты типа +FIRST_ROWS котрые как-бы ускоряют получение первой пачки
строк.


Только надо не забывать, что хинты типа +FIRST_ROWS замедляют получение последней строки выборки.
6 авг 12, 19:12    [12970663]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить