Текущее время: Вт, апр 16 2024, 21:09

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: а как лучче оптимизировать inner join с частями одно поля
СообщениеДобавлено: Пт, ноя 12 2004, 08:18 
Гость
вот к примеру - из BSIS+BSAS тянем записи бух.документов, там есть такое поле ZUONR, значения которое содержат какбы 2 куска - состыкованные поля KUKEY+ESNUM таблицы присвоений FEBCL (конечная цель - вытянуть из второй номер платежки, под которую был оформлен этот бух.документ).

Не нравится производительность выборки из БД :( ... Дело в том, что реально 90% документов, которые отбираются из BSIS, не являются платежечными (т.е. заведомо не имеют соответствия в FEBCL).

Пробовал делать так:
*1 проход, предварительно выделяем док-ты, где возможны
*платежки
select BELNR ZUONR from BSIS into itab1
where ZUONR оканчивается на 'RUB' (признак, что в бух док-те есть платежка)

*2 проход, более детальный отбор, по док-там 1 прохода
select ... from BSIS into itab2
for all entries in itab1
where
BELNR = itab1-BELNR
плюс доп-условия на основе select-options

*3 проход, выделение KUKEY ESNUM, поиск
*соответствия в FEBCL
loop at itab2
kukey1 = itab2-ZUONR(8)
esnum1 =itab2-ZUONR+9(5)
select single SELVON from FEBCL
where KUKEY=kukey1 and ESNUM=esnum1
if sy-subrc=0
* № платежки найден, чтото делаем
endif.
endloop

Вроде-бы по идее, первый проход должен отсечь нужные 10-15%
документов, вторая выборка тогда должна выполняться существенно
быстрее (чем если-бы был один select from BSIS), т.к. набор BELNR
относительно невелик. Третий select single вообще идет только по ключевым полям

Но почему-то не наблюдается увеличения производительности :(

Можно-ли както еще ускорить "увязку" двух плоских таблиц, если 1 поле одной нужно поделить на 2 куска, и связать из с 2 полями другой таблицы?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: Re: а как лучче оптимизировать inner join с частями одно пол
СообщениеДобавлено: Пт, ноя 12 2004, 09:39 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, окт 13 2004, 14:03
Сообщения: 209
Откуда: Москва
Пол: Мужской
PavelBerezin написал(а):
вот к примеру - из BSIS+BSAS тянем записи бух.документов


А на таблицы BSIS+BSAS есть индексы?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 10:13 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
Если искать по zuonr по критерию '%RUB', то никакие индексы тут не помогут.
Если речь идет о таблицах bsis и bsas, то тут для поиска платежек, скорее, надо ориентироваться на номер счета. Для платежек это, наверное, будет 51*. БЕ тоже надо конкретизировать. Тогда хотя бы БД будет вести поиск по первичному ключу, что на порядок быстрее.
Еще можно ориентироваться на вид документа - поле blart, ну, может, еще на какие-то поля - поспрашивай настройщиков FI. Но здесь понадобится вторичный индекс. И не надо никаких хитрых алгоритмов.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: *
СообщениеДобавлено: Пт, ноя 12 2004, 14:12 
Гость
да - поиск по ZUONR идет по like '__________RUB' ... т.е 8+5 цифр плюс RUB в конце ... А почему индекс тут не поможет? И можно-ли создавать доп.индекс по части символов поля (13-15я позиции) ?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 15:31 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
1. Поскольку в условии для zuonr символы в левой части поля строго не заданы, то вторичный индекс БД использоваться не будет. Если бы было наоборот - то это пожалуйста. Те индексы, о которых ты пишешь, создать невозможно.
2. Мой совет: не парься с полем zuonr. Найди другие признаки для платежки.
3. Можно еще запланировать периодически повторяемое фоновое задание и создать собственную таблицу, в которую будут записываться номера нужных документов. Тогда не нужно разгребать все документы, а только те, которые не успели обработаться заданием. Но это не самое лучшее решение по многим причинам. См п. 2.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 17:41 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, окт 13 2004, 14:03
Сообщения: 209
Откуда: Москва
Пол: Мужской
Дмитрий написал:
1. Поскольку в условии для zuonr символы в левой части поля строго не заданы, то вторичный индекс БД использоваться не будет.


Не знаю у кого как :oops: а у меня на 153000 записей работает легко:

SELECT-OPTIONS: ZUONR FOR BSIS-ZUONR.

ZUONR-SIGN = 'I'.
ZUONR-OPTION = 'CP'.
ZUONR-LOW = '++++++++RUB'.
ZUONR-HIGH = ''.
APPEND ZUONR.

SELECT * FROM BSIS WHERE ZUONR IN ZUONR.

Есссесно есть индекс на BSIS-ZUONR. :D


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 18:06 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
ROMP написал:
Дмитрий написал:
1. Поскольку в условии для zuonr символы в левой части поля строго не заданы, то вторичный индекс БД использоваться не будет.


Не знаю у кого как :oops: а у меня на 153000 записей работает легко:

SELECT-OPTIONS: ZUONR FOR BSIS-ZUONR.

ZUONR-SIGN = 'I'.
ZUONR-OPTION = 'CP'.
ZUONR-LOW = '++++++++RUB'.
ZUONR-HIGH = ''.
APPEND ZUONR.

SELECT * FROM BSIS WHERE ZUONR IN ZUONR.

Есссесно есть индекс на BSIS-ZUONR. :D


Дорогуша, запустите st05 и посмотрите используется ли ваш вторичный индекс при таком селекте... Так... Ради интереса...
:wink:


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

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


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

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


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

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