Текущее время: Пн, июл 28 2025, 01:26

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


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

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


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

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