Текущее время: Ср, июл 30 2025, 20:27

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Нужна помощь с JOIN селектом.
СообщениеДобавлено: Ср, дек 30 2009, 15:05 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 07 2006, 12:48
Сообщения: 76
Пол: Мужской
Селект:
Code:
     select rseg~wrbtr
               rbkp~waers
               rbkp~kursf
               rseg~menge
               s603~sptag
               rseg~belnr
               rseg~gjahr
               rseg~buzei
          into table lvt_rseg[]
          from s603 join rseg
            on rseg~ebeln eq s603~ebeln
           and rseg~ebelp eq s603~ebelp
                    join rbkp
            on rbkp~belnr eq rseg~belnr
           and rbkp~gjahr eq rseg~gjahr
         where s603~spmon eq '0000'
           and s603~lifnr eq tab_price-lifnr
           and s603~matnr eq tab_price-matnr
           and rbkp~blart eq 'RE'
           and rbkp~stblg eq ''
           and rbkp~zuonr eq sp_werks.

Трассировка:

Цитата:
SQL Statement
----------------------------------------------------------------------------------------------------------------------
SELECT
T_01 . "WRBTR" , T_02 . "WAERS" , T_02 . "KURSF" , T_01 . "MENGE" , T_00 . "SPTAG" ,
T_01 . "BELNR" , T_01 . "GJAHR" , T_01 . "BUZEI"
FROM
"S603" T_00 INNER JOIN "RSEG" T_01 ON T_01 . "MANDT" = :A0 AND T_01 . "EBELN" = T_00 . "EBELN" AND
T_01 . "EBELP" = T_00 . "EBELP" INNER JOIN "RBKP" T_02 ON T_02 . "MANDT" = :A1 AND T_02 . "BELNR"
= T_01 . "BELNR" AND T_02 . "GJAHR" = T_01 . "GJAHR"
WHERE
T_00 . "MANDT" = :A2 AND T_00 . "SPMON" = :A3 AND T_00 . "LIFNR" = :A4 AND T_00 . "MATNR" = :A5
AND T_02 . "BLART" = :A6 AND T_02 . "STBLG" = :A7 AND T_02 . "ZUONR" = :A8


Execution Plan

----------------------------------------------------------------------------------------------------------------------
System: EUD

-----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
-----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 148 | 88 (0)|
| 1 | NESTED LOOPS | | 1 | 148 | 88 (0)|
| 2 | NESTED LOOPS | | 1 | 94 | 83 (0)|
|* 3 | TABLE ACCESS FULL | RBKP | 1 | 42 | 68 (0)|
| 4 | TABLE ACCESS BY INDEX ROWID| RSEG | 84 | 4368 | 15 (0)|
|* 5 | INDEX RANGE SCAN | RSEG~0 | 270 | | 3 (0)|
|* 6 | INDEX RANGE SCAN | S603~0 | 1 | 54 | 5 (0)|
-----------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

3 - filter("T_02"."STBLG"=:A7 AND "T_02"."BLART"=:A6 AND
"T_02"."ZUONR"=:A8 AND "T_02"."MANDT"=:A1)
5 - access("T_01"."MANDT"=:A0 AND "T_02"."BELNR"="T_01"."BELNR" AND
"T_02"."GJAHR"="T_01"."GJAHR")
6 - access("T_00"."MANDT"=:A2 AND "T_00"."SPMON"=:A3 AND
"T_00"."LIFNR"=:A4 AND "T_00"."MATNR"=:A5 AND
"T_01"."EBELN"="T_00"."EBELN" AND "T_01"."EBELP"="T_00"."EBELP")
filter("T_01"."EBELN"="T_00"."EBELN" AND
"T_01"."EBELP"="T_00"."EBELP")


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна помощь с JOIN селектом.
СообщениеДобавлено: Ср, дек 30 2009, 15:44 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
В чем конкретно помочь?

Тэг [code][/code] научить использовать?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Нужна помощь с JOIN селектом.
СообщениеДобавлено: Ср, дек 30 2009, 16:03 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 07 2006, 12:48
Сообщения: 76
Пол: Мужской
Пономарев Артем написал:
В чем конкретно помочь?

Тэг [code][/code] научить использовать?

Мне нужно без хинтов использовать ту последовательность, которая указана в селекте, т.е. T_00->T_01->T_02.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна помощь с JOIN селектом.
СообщениеДобавлено: Ср, дек 30 2009, 16:18 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Для этого надо выкинуть думатель из РСУБД. Он же оптимизатор запросов. Раз РСУБД строит такой план - значит он оптимальный для данных условий с еейной точки зрения.
Варианта два: хинты или разбиение селекта на отдельные выборки. Третьего не дано.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Нужна помощь с JOIN селектом.
СообщениеДобавлено: Ср, дек 30 2009, 16:48 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 07 2006, 12:48
Сообщения: 76
Пол: Мужской
Пономарев Артем написал:
Для этого надо выкинуть думатель из РСУБД. Он же оптимизатор запросов. Раз РСУБД строит такой план - значит он оптимальный для данных условий с еейной точки зрения.
Варианта два: хинты или разбиение селекта на отдельные выборки. Третьего не дано.

Спасибо за помощь.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна помощь с JOIN селектом.
СообщениеДобавлено: Чт, дек 31 2009, 01:11 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июн 02 2009, 22:28
Сообщения: 228
Откуда: MOW
Пол: Мужской
При подозрении на неадекватность работы оптимизатора полезно проверить, когда последний раз пересобиралась статистика и, если довольно давно, пересобрать заново.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Нужна помощь с JOIN селектом.
СообщениеДобавлено: Чт, дек 31 2009, 12:25 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
а если left join и удаление?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Нужна помощь с JOIN селектом.
СообщениеДобавлено: Вт, янв 05 2010, 22:20 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Полагаю, что в S603 ключ начинается с полей SSOUR и VRSIO. Зачастую помогает, если добавить их. Кстати, VRSIO = 000 так и так нужно бы указывать, а то может получиться неприятный сюрприз.

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна помощь с JOIN селектом.
СообщениеДобавлено: Пн, янв 11 2010, 14:02 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Вообще лучше разделить выборки:
1.rbkp+rseg
2.s603 по ebeln, ebelp из выборки 1 с замечанием Jelenы

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

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


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

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


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

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