Текущее время: Пт, июл 18 2025, 11:32

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Оптимизация запроса
СообщениеДобавлено: Вс, май 14 2006, 16:28 
Начинающий
Начинающий

Зарегистрирован:
Вс, май 14 2006, 16:24
Сообщения: 1
Подскажите, что можно сделатьв данном случае для оптимизацииЖ
SELECT belnr gjahr budat blart shkzg dmbtr
wrbtr waers lifnr rebzg rebzj
FROM bsik
INTO TABLE t_table
FOR ALL ENTRIES IN lt_temp
WHERE bukrs EQ p_bukrs
AND lifnr EQ lt_temp-lifnr
AND umskz EQ ''
AND shkzg EQ 'S'
AND rebzg EQ lt_temp-belnr
AND rebzj EQ lt_temp-gjahr.
(lt_temp содержит около 100 000 записей и запрос падает в дамп по тайм ауту)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация запроса
СообщениеДобавлено: Вс, май 14 2006, 19:07 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
Ttt написал(а):
Подскажите, что можно сделатьв данном случае для оптимизацииЖ
SELECT belnr gjahr budat blart shkzg dmbtr
wrbtr waers lifnr rebzg rebzj
FROM bsik
INTO TABLE t_table
FOR ALL ENTRIES IN lt_temp
WHERE bukrs EQ p_bukrs
AND lifnr EQ lt_temp-lifnr
AND umskz EQ ''
AND shkzg EQ 'S'
AND rebzg EQ lt_temp-belnr
AND rebzj EQ lt_temp-gjahr.
(lt_temp содержит около 100 000 записей и запрос падает в дамп по тайм ауту)


IMHO, выбрать все, ограничившись по LIFNR и GJAHR в виде ranges, а потом пофильтровать... было бы здорово для фильтрации сделать таблицу t_table типа hashed. но это IMHO, на деле все может быть по-другому


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация запроса
СообщениеДобавлено: Пн, май 15 2006, 01:59 
Гость
Ttt написал(а):
Подскажите, что можно сделатьв данном случае для ...
...
FOR ALL ENTRIES IN lt_temp
...
(lt_temp содержит около 100 000 записей и запрос падает в дамп по тайм ауту)


FOR ALL ENTRIES губительно для производительности ... отмахивайся от него руками и ногами ... лучше сначала без этого условия все выбирай во внутр. таблицу, а уж потом выбирай из выбранного ...


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, май 15 2006, 08:15 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
В качестве индекса у вас используется только часть первичного ключа BUKRS & LIFNR.
1) Убедитесь, что нет пустых значений в полях LT_TEMP, которые используется в выборке. Наборы этих полей должны быть уникальны для корректной выборки.
2) Создайте пользовательский индекс MANDT-BUKRS-LIFNR-REBZG-REBZJ и немного поменяйте условие выбора.
После разбора п.1, думаю, записей в LT_TEMP станет гораздо меньше :wink:

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: re
СообщениеДобавлено: Пн, май 15 2006, 15:37 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
согласен с EHOT,

смотря как этот FOR ALL ENTRIES в UNION собирается,
в UNION не может сразу 100 тыс запросов объединиться,
следовательно, будет несколько тысяч отдельных запросов,
объединение результатов и завершающее выкидывание повторяющихся строк.
допустим каждый запрос оборачивается в сетевой обмен,
судя по всему этого времени достаточно для timeout dump.. :mrgreen:

можно убрать FOR ALL ENTRIES, считать BSIK отдельно в T_TABLE,
затем отдельно отфильтровывать записи по LT_TEMP.

вообще хотелось бы узнать, откуда формируется LT_TEMP,
не из таблицы ли, вдруг там JOIN-ом обойтись можно ?


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

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


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

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


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

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