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

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


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

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


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

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