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


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

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


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

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