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

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


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

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


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

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