Текущее время: Ср, июл 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 часа


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

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


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

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