Текущее время: Вс, июл 27 2025, 22:03

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Оптимизация выборки из таблицы COEP
СообщениеДобавлено: Вт, фев 08 2011, 09:30 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, май 11 2006, 12:07
Сообщения: 271
Откуда: Chelyabinsk
Пол: Женский
Добрый день!
К COEP есть индекс: MANDT/OBJNR/KSTAR/GJAHR/PERIO/PAROB1
Подскажите, пожалуйста, как оптимизировать селект из таблицы COEP?

Код такой:
Select kokrs werks objnr matnr meinh sum( MEGBTR ) as MEGBTR From Coep
into corresponding fields of table gt_coep
Where Objnr in Gs_consts-rs_objnr And Kstar in r_kstar and Gjahr Eq P_30 and Perio Eq P_20 and
KOKRS = Gs_consts-KOKRS and wrttp = '04' And Werks Eq P_10 And Matnr Ne Space and MEGBTR <> 0
group by kokrs werks objnr matnr meinh.

_________________
Абапер...
Продолжаю удивляться SAPу!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация выборки из таблицы COEP
СообщениеДобавлено: Вт, фев 08 2011, 09:49 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Anutka, сначала покажите результат трассировки SQL этого запроса (транзакция ST05).

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация выборки из таблицы COEP
СообщениеДобавлено: Вт, фев 08 2011, 09:54 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Кроме этого навскидку:
1.Зачем в списке выводимых полей и group by нужно поле kokrs? В условиях выборки KOKRS = Gs_consts-KOKRS.
2.В group by лучше использовать только те поля, которые есть в индексе. Суммирование по остальным можно сделать внутри SELECT..ENDSELECT

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация выборки из таблицы COEP
СообщениеДобавлено: Вт, фев 08 2011, 10:38 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, май 11 2006, 12:07
Сообщения: 271
Откуда: Chelyabinsk
Пол: Женский
Из ST05:
353010114 COEP FETCH
Что еще от туда нужно?

а суммирование в SELECT..ENDSELECT разве не будет дольше работать?

_________________
Абапер...
Продолжаю удивляться SAPу!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация выборки из таблицы COEP
СообщениеДобавлено: Вт, фев 08 2011, 11:06 
Начинающий
Начинающий

Зарегистрирован:
Вт, фев 08 2011, 10:56
Сообщения: 3
Anutka написала:
Добрый день!
К COEP есть индекс: MANDT/OBJNR/KSTAR/GJAHR/PERIO/PAROB1
Подскажите, пожалуйста, как оптимизировать селект из таблицы COEP?

Код такой:
Select kokrs werks objnr matnr meinh sum( MEGBTR ) as MEGBTR From Coep
into corresponding fields of table gt_coep
Where Objnr in Gs_consts-rs_objnr And Kstar in r_kstar and Gjahr Eq P_30 and Perio Eq P_20 and
KOKRS = Gs_consts-KOKRS and wrttp = '04' And Werks Eq P_10 And Matnr Ne Space and MEGBTR <> 0
group by kokrs werks objnr matnr meinh.

может индекс другой заюзать? вот селект может и пошустрее будет выглядеть(подшаманить для данной задачи...мб будет счастье)
SELECT kstar matnr meinb SUM( mbgbtr ) SUM( wkgbtr ) FROM coep
INTO TABLE ...
WHERE lednr = ... AND
objnr IN _objnr_rng AND
gjahr = god AND
wrttp = '04' AND
versn = ... AND
perio = period AND
beknz IN ('S', 'H')
GROUP BY kstar matnr meinb.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Оптимизация выборки из таблицы COEP
СообщениеДобавлено: Вт, фев 08 2011, 11:58 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, май 11 2006, 12:07
Сообщения: 271
Откуда: Chelyabinsk
Пол: Женский
Какой другой индекс?
Есть 3 индекса:
1. Формирование индекса как ключа базы данных сумм
2. MANDT/OBJNR/KSTAR/GJAHR/PERIO/PAROB1
3. MANDT/TIMESTMP/OBJNR, Index for Delta read method (CO-PA)

Я использовала 2-ой.
По КЕ в группировке согласна, но делу не помогло.

_________________
Абапер...
Продолжаю удивляться SAPу!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация выборки из таблицы COEP
СообщениеДобавлено: Вт, фев 08 2011, 12:05 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, май 11 2006, 12:07
Сообщения: 271
Откуда: Chelyabinsk
Пол: Женский
в первом индексе куча полей:
MANDT LEDNR OBJNR GJAHR WRTTP VERSN KSTAR HRKFT PERIO VRGNG PAROB USPOB VBUND PARGB BEKNZ TWAER

_________________
Абапер...
Продолжаю удивляться SAPу!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация выборки из таблицы COEP
СообщениеДобавлено: Вт, фев 08 2011, 12:13 
Начинающий
Начинающий

Зарегистрирован:
Вт, фев 08 2011, 10:56
Сообщения: 3
я намекал на 1 индекс...
и пусть куча полей не пугает..не спорю если их все заполнить то селект летать будет, но и первых 7-8 полей достаточно для нормальной его работы. Просто посмотрите что выгодней будет использовать.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Оптимизация выборки из таблицы COEP
СообщениеДобавлено: Вт, фев 08 2011, 12:19 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, май 11 2006, 12:07
Сообщения: 271
Откуда: Chelyabinsk
Пол: Женский
выборку могу ограничить только этими полями:
Objnr Kstar Gjahr Perio KOKRS wrttp Werks

Больше нет данных для ограничения :(

_________________
Абапер...
Продолжаю удивляться SAPу!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация выборки из таблицы COEP
СообщениеДобавлено: Вт, фев 08 2011, 12:32 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Anutka написала:
Из ST05:
353010114 COEP FETCH
Что еще от туда нужно?

Вот это (на операторе Open нажмите кнопку Explain)
Code:
SELECT
  "PERIO" , "PAROB" , "KSTAR" , "VRGNG" , "BEKNZ" , "OBJNR" , "MEINH" , "MEGBTR" , "OWAER" ,
  "WOGBTR"
FROM
  "COEP"
WHERE
  "MANDT" = :A0 AND "LEDNR" = :A1 AND "OBJNR" = :A2 AND "GJAHR" = :A3 AND "PERIO" = :A4 AND "WRTTP"
  = :A5 AND "VERSN" = :A6

Execution Plan
SELECT STATEMENT ( Estimated Costs = 1 , Estimated #Rows = 1 )

        2 TABLE ACCESS BY INDEX ROWID COEP
          ( Estim. Costs = 1 , Estim. #Rows = 1 )

            1 INDEX RANGE SCAN COEP~ZZ1
              ( Estim. Costs = 3 , Estim. #Rows = 1 )
              Search Columns: 7
              Access Predicates

Access Predicates

"COEP"."MANDT"=:Z AND "COEP"."LEDNR"=:Z AND
"COEP"."VERSN"=:Z AND "COEP"."WRTTP"=:Z AND
"COEP"."GJAHR"=:Z AND "COEP"."PERIO"=:Z AND
"COEP"."OBJNR"=:Z

Обратите внимание на количество полей в Search Columns, и какие поля выбираются в Access Predicates.

Вот сам индекс
Code:
NONUNIQUE  Index   COEP~ZZ1

Column Name                     #Distinct
MANDT                                          4
LEDNR                                          1
VERSN                                          3
WRTTP                                          6
GJAHR                                          5
PERIO                                         12
OBJNR                                      4 262
PAROB                                      3 003
VRGNG                                         22


Anutka написала:
а суммирование в SELECT..ENDSELECT разве не будет дольше работать?

Если в group by будут только поля, содержащиеся в индексе - то не должно замедлиться. Это уже зависит от СУБД ;)

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация выборки из таблицы COEP
СообщениеДобавлено: Вт, фев 08 2011, 12:40 
Начинающий
Начинающий

Зарегистрирован:
Вт, фев 08 2011, 10:56
Сообщения: 3
Оптимизатор нагружает суммирование и группировка, matnr ne space & megbtr <> 0 тоже дают нагрузку....Но это уже СУБД.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Оптимизация выборки из таблицы COEP
СообщениеДобавлено: Вт, фев 08 2011, 18:06 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, янв 30 2007, 10:59
Сообщения: 61
Проверьте, существует ли индекс в БД (в словаре при просмотре индекса показывается). Затем проверьте, что в range по индексным полям нет сравнений на неравенство и like должно приводиться к диапазону.

_________________
Блаженны прыгающие, ибо они допрыгаются.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация выборки из таблицы COEP
СообщениеДобавлено: Сб, фев 12 2011, 18:23 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, май 11 2006, 12:07
Сообщения: 271
Откуда: Chelyabinsk
Пол: Женский
Переделала выборку на 1-ый индек "Формирование индекса как ключа базы данных сумм" и всё стало летать :)

А вот если зайти в просмотр 2-го индекса MANDT/OBJNR/KSTAR/GJAHR/PERIO/PAROB1, то статус его активет, но есть надпись "Индекс не существует в системе БД ORACLE".

_________________
Абапер...
Продолжаю удивляться SAPу!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация выборки из таблицы COEP
СообщениеДобавлено: Ср, мар 02 2011, 15:54 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, май 11 2006, 12:07
Сообщения: 271
Откуда: Chelyabinsk
Пол: Женский
Подскажите, пожалуйста, а как создать индекс в БД? хелп не установлен :(

_________________
Абапер...
Продолжаю удивляться SAPу!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация выборки из таблицы COEP
СообщениеДобавлено: Ср, мар 02 2011, 16:17 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 07:26
Сообщения: 80
Откуда: Альфа Центавра
Пол: Мужской
Anutka написала:
Подскажите, пожалуйста, а как создать индекс в БД? хелп не установлен :(

SE11 Индексы ...?


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

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


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

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


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

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