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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Оптимизировать(ускорить) выборку из BSIS
СообщениеДобавлено: Пн, сен 17 2012, 13:23 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, окт 05 2010, 19:56
Сообщения: 52
Здравствуйте, коллеги!

Столкнулся с такой ситуацией:

В программе делаю выборку нескольких полей из таблицы BSIS во внутреннюю таблицу.
Отрабатывает за 28 минут... выбирает 1 060 000 записей во внутреннюю таблицу.
Всего записей в Bsis - 15 700 000.

Подскажите, пожалуйста:
Это нормальная скорость работы? Как можно ускорить процесс?

Ниже представлен кусок программы.

Code:
DATA: lt_bsis LIKE TABLE OF bsis.

SELECT dmbtr belnr bschl xnegp xblnr
         INTO CORRESPONDING FIELDS OF TABLE lt_bsis
                                       FROM bsis
                                      WHERE bukrs = p_bukrs AND
                                            hkont IN s_hkont AND
                                            gjahr IN s_gjahr AND
                                            blart IN s_blart.



Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Оптимизировать(ускорить) выборку из BSIS
СообщениеДобавлено: Пн, сен 17 2012, 13:33 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, июн 12 2008, 16:54
Сообщения: 52
Во-первых, сходу можно предложить создать соответствующий индекс в таблице BSIS(но все таки лучше убедиться в трассировке ST05, какой идекс в данный момент используется в запросе);

Во-вторых, заменить INTO CORRESPONDING FIELDS OF TABLE на INTO TABLE,
где lt_bsis будет только с необходимыми полями.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизировать(ускорить) выборку из BSIS
СообщениеДобавлено: Пн, сен 17 2012, 13:37 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, окт 05 2010, 19:56
Сообщения: 52
Индекс не помог.

На сколько второй вариант сможет увеличить скорость?
Не думаю, что будут чувствоваться сильные изменения...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Оптимизировать(ускорить) выборку из BSIS
СообщениеДобавлено: Пн, сен 17 2012, 13:42 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Sergey_N написал(а):
Индекс не помог.

На сколько второй вариант сможет увеличить скорость?
Не думаю, что будут чувствоваться сильные изменения...

Покажите explain из st05.

С базисом разговаривали?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизировать(ускорить) выборку из BSIS
СообщениеДобавлено: Пн, сен 17 2012, 13:42 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, окт 22 2009, 12:41
Сообщения: 473
MaaLL написал(а):
Во-первых, сходу можно предложить создать соответствующий индекс в таблице BSIS(но все таки лучше убедиться в трассировке ST05, какой идекс в данный момент используется в запросе);


В BSIS всего один вторичный индекс и для данного запроса он не самый оптимальный.
Имеет ли смысл создавать свой индекс для отчета - вопрос неоднозначный. Если это очень частый и важный отчет - может быть имеет. А так - при появлении нового индекса планировшик запросов может начать предлагать неоптимальный вариант и производитеьность снизится уже у системных программ.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизировать(ускорить) выборку из BSIS
СообщениеДобавлено: Пн, сен 17 2012, 13:46 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Sergey_N написал(а):
Отрабатывает за 28 минут... выбирает 1 060 000 записей во внутреннюю таблицу.
Всего записей в Bsis - 15 700 000.

28 минут - это много
1. s_hkont, s_gjahr, s_blart у вас заполнены?
2. проверьте в тр. DB20 когда обновлялась статистика по BSIS
3. Миллион записей во внутр. таблицу - многовато, желательно добавить ограничений

MaaLL написал(а):
Во-вторых, заменить INTO CORRESPONDING FIELDS OF TABLE на INTO TABLE,
где lt_bsis будет только с необходимыми полями.
Это мелочи, можно не заморачиваться. Так даже лучше - меньше вероятность ошибки при дальнейшем расширении списка полей

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизировать(ускорить) выборку из BSIS
СообщениеДобавлено: Пн, сен 17 2012, 13:53 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Нужно оптимизировать не столько выборку, сколько саму задачу. Не поверю, что кто-то будет читать отчет в 1 миллион строк. Скорей всего нужны агрегированные суммы по каким то признакам, по возможности используйте group by. Зачем выбирается BELNR, что с ним дальше делается?

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизировать(ускорить) выборку из BSIS
СообщениеДобавлено: Пн, сен 17 2012, 15:18 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Sergey_N написал(а):
Индекс не помог.

1. Как тут правильно заметили - где explain из ST05?
2. Какая СУБД используется?

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизировать(ускорить) выборку из BSIS
СообщениеДобавлено: Ср, сен 19 2012, 13:38 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, окт 05 2010, 19:56
Сообщения: 52
1) explain из st05 по ссылке http://savepic.su/2454042.htm

2) Oracle


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Оптимизировать(ускорить) выборку из BSIS
СообщениеДобавлено: Ср, сен 19 2012, 13:46 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Если в индекс полностью попадаете, 1 млн записей по ощущениям должны минут за 5 выбираться.
Какие у вас поля в этом самом индексе ZH1?

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизировать(ускорить) выборку из BSIS
СообщениеДобавлено: Ср, сен 19 2012, 13:50 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, окт 05 2010, 19:56
Сообщения: 52
LKU написал:
Если в индекс полностью попадаете, 1 млн записей по ощущениям должны минут за 5 выбираться.
Какие у вас поля в этом самом индексе ZH1?


bukrs, hkont, gjahr, sgtxt, monat, blart


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Оптимизировать(ускорить) выборку из BSIS
СообщениеДобавлено: Ср, сен 19 2012, 14:08 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
То есть, BLART у вас в индексе в самом конце.
Если у того набора BLART, который вы передаете в селекте, потенциально высокая селективность, думайте над тем, чтобы в перечне полей индекса BLART ставить не позже, чем после gjahr.

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизировать(ускорить) выборку из BSIS
СообщениеДобавлено: Ср, сен 19 2012, 15:22 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
Время выполнения сильно зависит от заполнения полей s_hkont, s_gjahr, s_blart. Из ST05 видно что заполнены и low и high. В этом случае сложно что-то оптимизировать. Если в s_hkont задан достаточно большой интервал (а похоже в вашем случае так оно и есть) - быстрее будет выбирать по s_blart+s_gjahr (для этого blart и gjahr должны быть в начале индекса). И наоборот, если задан большой интервал по датам и относительно небольшой по счетам - быстрее получится по индексу ZH1. Проблема в том, что даже если вы создадите оба индекса, без использования гистограмм оптимизатор БД никак не сможет определить каким индексом лучше воспользоваться


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизировать(ускорить) выборку из BSIS
СообщениеДобавлено: Ср, сен 19 2012, 16:09 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
А в полях HKONT и GJAHR разброс значений большой?
В подобной ситуации помогает разбиение запроса на несколько с ограничением по равенству поля.
Но для начала попробуйте использовать хинт Oracle SUBSTITUTE_VALUES.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизировать(ускорить) выборку из BSIS
СообщениеДобавлено: Сб, сен 22 2012, 15:58 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
номер счета наиболее узкий критерий,
для сравнения ,попробуйте предварительно выбрать номера счетов из плана во внутр таблицу
и запустить по (bukrs, hkont) используя for all entries ,остальные критерии укажите в where

как бы то ни было, 1млн записей это ад


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

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


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

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


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

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