Текущее время: Ср, июн 18 2025, 21:44

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


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

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


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

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