Текущее время: Ср, июл 23 2025, 09:45

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: INDEX in HR(кадры)
СообщениеДобавлено: Вт, дек 26 2006, 12:26 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, дек 06 2005, 11:22
Сообщения: 72
Откуда: Krivoy Rog
Господа есть такой вот простой запрос :
Code:

SELECT  t1~plans   "t2~PRIOX
    INTO CORRESPONDING FIELDS OF TABLE it_test
    FROM ( PA0001 AS t1
    INNER JOIN HRP1001 AS t2
    ON  t1~PLANS = t2~OBJID )
  WHERE t1~WERKS = '1000'
    AND t1~BEGDA <= date
    AND t1~ENDDA >= date
    AND t2~OBJID = t1~plans
    AND t2~OTYPE = 'S'
    AND t2~SCLAS = 'O'
    AND t2~SUBTY = 'A003'
    AND t2~PLVAR = '01'
    AND t2~BEGDA <= date
    AND t2~ENDDA >= date

    %_HINTS ORACLE 'FIRST_ROWS'

    "%_HINTS ORACLE 'INDEX("&TABLE 2&")'

*    %_HINTS ORACLE 'INDEX("&TABLE 1&" "PA0001~0")'
*            ORACLE 'INDEX("&TABLE 2&" "HRP1001~0")'
    .

Как видно по коду уже перепробовал кучу разных вариантов, а запрос вот как не работал так и не работает.
Результат выборки должен составлять приблизительно 10 000 записей, но запрос выпадает по таймауту (10 мин.) .

Если эту выборку переписать через
Code:

Select ... FROM PA0001 INTO TABLE X .
LOOP AT TABLE X .

SELECT SINGLE ... FROM HRP1001 INTO HRP1001
WHERE ....
X-PRIOX = HRP1001-PRIOX .
modify X .
ENDLOOP.


то таким образом выборка происходит около 15 сек.

Вопрос, какими телодвижениями привести в чуства
Code:
SELECT  t1~plans   "t2~PRIOX
    INTO CORRESPONDING FIELDS OF TABLE it_test
    FROM ( PA0001 AS t1
    INNER JOIN HRP1001 AS t2
    ON  t1~PLANS = t2~OBJID ) ....



Заранее благодарен за хелп !


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 26 2006, 13:16 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
IMHO, так писать - плохой тон. пользуйтесь ЛБД.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 26 2006, 14:19 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, дек 06 2005, 11:22
Сообщения: 72
Откуда: Krivoy Rog
holocron написал(а):
IMHO, так писать - плохой тон. пользуйтесь ЛБД.


ЛБД PCH уходит в дамп по таймауту, когда происходит выборка по всем сотрудникам предприятия используя путь O-S-P, этот запрос был призван ускорить работу...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: re
СообщениеДобавлено: Вт, дек 26 2006, 17:03 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
попробуй убрать из where t2~begda t2~endda и t1~plans = t2~objid


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: re
СообщениеДобавлено: Вт, дек 26 2006, 17:24 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, дек 06 2005, 11:22
Сообщения: 72
Откуда: Krivoy Rog
trop написал(а):
попробуй убрать из where t2~begda t2~endda и t1~plans = t2~objid


begda & endda необходимые поля так как отчет формируется на дату, а у человека могло быть несколько сесий.

t1~plans = t2~objid Это условие соеденения ( Человек занимает штатную должность (PA0001-PLANS) и мне необходима информация о занимаемой штатной должности HRP1001-OBJID = PA0001-PLANS - типы у них одинаковые) , а в условие WHERE эта связка была добавленна с целью перечислить все поля участвующие в индексах таблиц, изначально запрос не имел такой связки в условии .

Терзают смутные сомнения что запрос игнорирует ИНДЕКСы.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 26 2006, 17:35 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
SergiK написал(а):
ЛБД PCH уходит в дамп по таймауту, когда происходит выборка по всем сотрудникам предприятия используя путь O-S-P, этот запрос был призван ускорить работу...

А если, например, все-таки в PCH собрать все должности по пути O-S, а потом в END-OF-SELETION грубо по ним отобрать людей, пользуясь PA0001?

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: re
СообщениеДобавлено: Вт, дек 26 2006, 17:36 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
засчет сужения where можно выбрать больше и быстрее,
затем откинуть ненужное


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 26 2006, 17:41 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, дек 06 2005, 11:22
Сообщения: 72
Откуда: Krivoy Rog
Сергей Королев написал:
SergiK написал(а):
ЛБД PCH уходит в дамп по таймауту, когда происходит выборка по всем сотрудникам предприятия используя путь O-S-P, этот запрос был призван ускорить работу...

А если, например, все-таки в PCH собрать все должности по пути O-S, а потом в END-OF-SELETION грубо по ним отобрать людей, пользуясь PA0001?

А как это координально отличается от цикла по выбранным людям и нахождению информации для человека о его шт. должности ?

Принцип вопроса в том что не должен такой простой запрос уходить в дамп.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 26 2006, 17:42 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, дек 06 2005, 11:22
Сообщения: 72
Откуда: Krivoy Rog
Господа !!!

Есть у кого-то модуль HR ?

Мог ли кто нибуть на своей системе выполнить похожий запрос и сообщить о результатах ?
Может на уровне базы чего-то с индексами ? Может я совсем не туда копаю А ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 26 2006, 17:55 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Если первый запрос падает по таймауту, а второй отрабатывает 15 сек., то скорее всего проблема в неправильной статистике по индексам. Вам нужно к базису. Пусть они обновят статистику по этим таблицам.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 26 2006, 22:21 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, ноя 13 2006, 14:42
Сообщения: 93
Пол: Мужской
Условие T2~OTYPE = 'S' лучше поставить в соединении JOIN, а не в условии WHERE. Насколько я помню, в таблице HRP1001 два первых ключевых поля как раз OTYPE и OBJID, и лучше их использовать вместе и сразу.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 27 2006, 06:36 
Специалист
Специалист

Зарегистрирован:
Вт, ноя 02 2004, 10:06
Сообщения: 136
а если запустить st05 и потом в трассировке посмотреть план выполнения запроса?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 27 2006, 09:15 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, дек 06 2005, 11:22
Сообщения: 72
Откуда: Krivoy Rog
qq написал(а):
а если запустить st05 и потом в трассировке посмотреть план выполнения запроса?

А как же его посмотреть если выполнение заканчивается дампом ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 27 2006, 09:23 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, дек 06 2005, 11:22
Сообщения: 72
Откуда: Krivoy Rog
EGF написал(а):
Если первый запрос падает по таймауту, а второй отрабатывает 15 сек., то скорее всего проблема в неправильной статистике по индексам. Вам нужно к базису. Пусть они обновят статистику по этим таблицам.


Если можно уточните подробнее, наш базис не совсем понимает о чем идет речь, если о SE14-адаптировать индекс , то это уже делали и это не дало результата .


Последний раз редактировалось SergiK Ср, дек 27 2006, 09:44, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 27 2006, 09:38 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Aleqs написал:
Условие T2~OTYPE = 'S' лучше поставить в соединении JOIN, а не в условии WHERE. Насколько я помню, в таблице HRP1001 два первых ключевых поля как раз OTYPE и OBJID, и лучше их использовать вместе и сразу.
Если внимательно смотреть запрос, то будет видно, что T2~OTYPE в JOIN использовать полюбому не получиться, т.к. зачем-то пытаются соеденить таблицу инфотипа персональных данных и таблицу из орг.менеджмента. А это две большие разницы.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу 1, 2  След.

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


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

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


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

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