Текущее время: Чт, июн 19 2025, 05:34

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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