SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Отказ от выборки из BSET



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
axaxa
Участник
Участник



Joined: 13 May 2009
Posts: 4

PostPosted: Wed May 13, 2009 1:29 pm    Post subject: Отказ от выборки из BSET Reply with quote

Добрый день.
Столкнулся с проблемой производительности при выборке из BSET.
Code:

 select * from bset appending corresponding fields of table all_bsis
    where bukrs = SEL_BUKR
        and HKONT in SEL_ACC
        and MWSKZ in S_MWSKZ
        and belnr in S_IDOCS
        and ( txgrp = '1' or txgrp = '2' )
        and MWSKZ <> space
        and kbetr = 0.


Есть мысль повысить производительность, за счет отказа от bseg и реализации выборки напрямую из БД.
BSET является кластером, значит данные собраны из нескольких таблиц.
Вот вопрос что это за таблицы? Подскажите кто знает.
И еще вопросик: Названия некоторых столбцов в кластере могут не совпадать с названиями столбцов в таблицах БД. Есть ли какой-нидь документик, где описывается соотношение названий столбцов?
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 155
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Wed May 13, 2009 2:45 pm    Post subject: Reply with quote

Добрый день!
Думаю, вы заблуждаетесь и путаете кластерную таблицу с view.
BSET хранится в таблице RFBLG, посмотрите ее структуру в se11, будет видно, что она состоит из ключа, нескольких служебных полей и одного длинного тектового поля, в котором хранятся все неключевые данные bset.

При чтении из кластерной таблицы важно, чтобы в условии where присутствовали ключевые поля в правильной последовательности, тогда выборка будет быстрой.
Для начала попробуйте поменять порядок полей в условии where вашего селекта, как указано ниже, возможно, оптимизатор не отработал.

Code:
select * from bset appending corresponding fields of table all_bsis
    where bukrs = SEL_BUKR
        and belnr in S_IDOCS
        and HKONT in SEL_ACC
        and MWSKZ in S_MWSKZ
        and ( txgrp = '1' or txgrp = '2' )
        and MWSKZ <> space
        and kbetr = 0.
Back to top
View user's profile Send private message Blog Visit poster's website
axaxa
Участник
Участник



Joined: 13 May 2009
Posts: 4

PostPosted: Wed May 13, 2009 4:14 pm    Post subject: Reply with quote

Спасибо за пояснения.
Правда у меня пишется что это "Таблица кластера".

Время работы не поменялось.
У меня тут глупый вопрос.
se30 показывает что 102 сек затрачивается на fetch bset.
Правильно ли я понимаю, что выборка не зависит от наличия ключевых полей?
Может, всетаки, есть возможность обойтись без bset?
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Wed May 13, 2009 7:01 pm    Post subject: Reply with quote

axaxa wrote:
Правильно ли я понимаю, что выборка не зависит от наличия ключевых полей?

Правильно Wink
axaxa wrote:
Может, всетаки, есть возможность обойтись без bset?

Попробуйте разобраться, какая цель выборки.
Судя по select, нужно выбрать все записи с нулевой ставкой НДС.
Можно разбить работу на 2 части:
1. Выбрать записи кодов налога со ставками из A003 + KONP, оставить только те коды налога в S_MWSKZ, у которых есть запись с KONP-KBETR = 0. Правильную последовательность выборки можно посмотреть по трассировке через ST05 транзакции FTXP.
2. Выбрать записи из прозрачных таблиц BSIS, BSAS(если счета налогов у вас выравниваются) по условиям
select * from bsis appending corresponding fields of table all_bsis
where bukrs = SEL_BUKR
and belnr in S_IDOCS
and HKONT in SEL_ACC
and MWSKZ in S_MWSKZ.

На BSIS/BSAS хотя бы индексы можно нужные создать Wink

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
axaxa
Участник
Участник



Joined: 13 May 2009
Posts: 4

PostPosted: Thu May 14, 2009 10:54 am    Post subject: Reply with quote

Спасибо за советы... буду ботать )))
По результатам отпишусь. Very Happy
Back to top
View user's profile Send private message
axaxa
Участник
Участник



Joined: 13 May 2009
Posts: 4

PostPosted: Fri May 15, 2009 2:22 pm    Post subject: Reply with quote

Работа идет, а пока она идет я хотел бы у Вас спросить.
Время выполнения fetch от чего зависит? И можно ли его как-нибудь снизить?
Спасибо.
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 155
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Fri May 15, 2009 3:27 pm    Post subject: Reply with quote

axaxa wrote:
Время выполнения fetch от чего зависит? И можно ли его как-нибудь снизить?
Спасибо.


От самого селекта, от правильности работы оптимизатора (актуальности статистики), от загрузки сервера базы данных в момент выборки.

Снизить время выполнения возможно как правильным написанием самого селекта, чтобы в условии where максимально использовались поля, по которым существует индекс, так и уменьшение количества выбираемых полей. Но последнее влияет в меньшей степени.
Back to top
View user's profile Send private message Blog Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.