Текущее время: Ср, июн 18 2025, 21:19

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Зависает при обр. усл where x in y опер. select
СообщениеДобавлено: Пн, ноя 29 2004, 16:44 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 12 2004, 11:17
Сообщения: 104
Добрый день, не могу понять в чем проблема.

report z_fi_kor_field_cb .
tables: bseg, tw22, tw50, zvwp.

selection-screen begin of block a111 with frame.
parameters: be like bseg-bukrs obligatory,
god like bseg-gjahr obligatory.
select-options:
dok_s for bseg-belnr obligatory.
selection-screen end of block a111.

selection-screen begin of block a112 with frame.
selection-screen begin of block a112 with frame.
selection-screen end of line.
select-options:
bschet_s for bseg-hkont.
selection-screen end of block a112.

selection-screen begin of block a113 with frame.
parameters: emit like bseg-vptnr,
finins like tw22-alwpkl,
xran like tw50-smoverw,
nomin like zvwp-zznom,
kol like bseg-menge,
edizm like bseg-meins.
selection-screen end of block a113.

data: begin of t_bseg occurs 100,
bukrs like bseg-bukrs,
gjahr like bseg-gjahr,
belnr like bseg-belnr,
hkont like bseg-hkont,
vptnr like bseg-vptnr,
zzalwpkl1 like bseg-zzalwpkl1,
zzsmoverw like bseg-zzsmoverw,
zznom like bseg-zznom,
menge like bseg-menge,
meins like bseg-meins,
end of t_bseg.

start-of-selection.

select *
from bseg
where bukrs = be and
gjahr = god and
belnr in dok_s and - здесь зависает если dok_s имеет более одного значения.
hkont in bschet_s .
clear t_bseg.
move-corresponding bseg to t_bseg.
collect t_bseg.
endselect.

Спасибо.

_________________
Верх упорства: набирать неверный пароль, пока компьютер не согласится.
Процесс вдумчивого пережевывания, как ничто другое, успокаивает и стимулирует умственную деятельность.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 29 2004, 17:27 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
Ну врядли там зависает, боюсь что просто табличка то BSEG кластерная, серверок слабенький, данных состав и маленькая тележка... оно работает но очччень не спешно... можно к примеру просмотреть через SM51 , что процессик висит на последовательном чтении таблички :P Короче учим матчасть :!:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 29 2004, 18:01 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 12 2004, 11:17
Сообщения: 104
Не могли бы вы объяснить причину сваливания в последовательный просмотр , ведь условие where написано с использованием ключевых полей, а при выборе одного значения dok_s все работает очень быстро. (* - в данном варианте запроса, пробовал и прямое перечисление возвращаемых полей)
Спасибо.

_________________
Верх упорства: набирать неверный пароль, пока компьютер не согласится.
Процесс вдумчивого пережевывания, как ничто другое, успокаивает и стимулирует умственную деятельность.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 29 2004, 18:10 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
onics написал(а):
Не могли бы вы объяснить причину сваливания в последовательный просмотр , ведь условие where написано с использованием ключевых полей, а при выборе одного значения dok_s все работает очень быстро. (* - в данном варианте запроса, пробовал и прямое перечисление возвращаемых полей)
Спасибо.

ST05 однако посмотри план запроса, а не по индексу, ну там условие с IN небось разложилось с кучей OR, соответвенно по части индекса работать не будет... может быстрее сделать отдельные запросы по каждому документу из условия IN, ну а про *, это я вообще молчу :P


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 29 2004, 18:16 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 12 2004, 11:17
Сообщения: 104
Спасибо.

_________________
Верх упорства: набирать неверный пароль, пока компьютер не согласится.
Процесс вдумчивого пережевывания, как ничто другое, успокаивает и стимулирует умственную деятельность.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Зависает при обр. усл where x in y опер. select
СообщениеДобавлено: Вт, ноя 30 2004, 07:15 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, авг 26 2004, 05:04
Сообщения: 922
Откуда: Челябинск
Пол: Мужской
onics написал(а):

select *
from bseg
where bukrs = be and
gjahr = god and
belnr in dok_s and - здесь зависает если dok_s имеет более одного значения.
hkont in bschet_s .
clear t_bseg.
move-corresponding bseg to t_bseg.
collect t_bseg.
endselect.


про * - это совершенно без разницы для BSEG, в любом случае на aplication передается vardata целиком.
А select лучше поделить на кучу мелких.
Также было бы неплохо использовать не bseg, а вторичные индексы. При этом может имеет смысл пойти через BKPF, в этом случае уже нельзя использовать *, но тут зависит от конкретного случая - может по вторичным индексам можно использовать sum.

Удачи

_________________
Все будет хорошо...
http://sap-blog.ru/


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Зависает при обр. усл where x in y опер. select
СообщениеДобавлено: Вт, ноя 30 2004, 08:07 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
artyom написал:
onics написал(а):

select *
from bseg
where bukrs = be and
gjahr = god and
belnr in dok_s and - здесь зависает если dok_s имеет более одного значения.
hkont in bschet_s .
clear t_bseg.
move-corresponding bseg to t_bseg.
collect t_bseg.
endselect.



про * - это совершенно без разницы для BSEG, в любом случае на aplication передается vardata целиком.
А select лучше поделить на кучу мелких.
Также было бы неплохо использовать не bseg, а вторичные индексы. При этом может имеет смысл пойти через BKPF, в этом случае уже нельзя использовать *, но тут зависит от конкретного случая - может по вторичным индексам можно использовать sum.

Удачи


Действительно лучше сначала прочитать BKPF, а уж затем BSEG. В общем случае что-то типа :

1. Читаем BKPF

select * into table i_bkpf from bkpf where bukrs = be
and belnr in dok_s
and gjahr = god.
2. Читаем BSEG

select * into table i_bseg from bseg
for all entries in i_bkpf where bukrs = i_bkpf-bukrs
and belnr = i_bkpf-belnr
and gjahr = i_bkpf-gjahr.
3. Обрабатываем i_bseg


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 30 2004, 14:28 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 12 2004, 11:17
Сообщения: 104
Спасибо, использовал bkpf все заработало.

_________________
Верх упорства: набирать неверный пароль, пока компьютер не согласится.
Процесс вдумчивого пережевывания, как ничто другое, успокаивает и стимулирует умственную деятельность.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB