Текущее время: Сб, авг 02 2025, 02:13

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 43 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 11 2007, 12:16 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
vvvictor написал:
Или я один такой извращенец ?
Пока одним обходимся. А вот describe table lines работает медленней чем lines( ).


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

Зарегистрирован:
Пн, сен 06 2004, 11:43
Сообщения: 1551
Пол: Мужской
Tetty написал:
Все циклы надо выполнять фоновыми заданиями НОЧЬЮ, чтобы пользователи не мешались! ;)
Особенно когда речь идет об оперативных отчетах :wink:

_________________
Ex ipso fonte bibere
Цитата:
Abyssus abyssum invocat
Dies diem docet
Ducunt volentem fata, nolentem trahunt

Estote prudentes sicut serpentes


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 11 2007, 12:31 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Tetty написал:
vvvictor написал:
Mike1 написал:
странно, что не упомянули про loop .... assigning.
А с многопоточным кодом никто не эксперементировал ? :lol: :lol: :lol: :lol: :lol:
Или я один такой извращенец ?


Все циклы надо выполнять фоновыми заданиями НОЧЬЮ, чтобы пользователи не мешались! ;)

Эт вопрос спорный :D У нас система не спит.... Круглые сутки идет пакетная загрузка производственных заказов :D


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Loop
СообщениеДобавлено: Вт, сен 11 2007, 14:11 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
_gary_ написал(а):
...
В итоге получилось что второй вариант работает медленне чем первый. почему так?

Для начала хотелось бы увидеть структуру tab_2 и tab_1!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 11 2007, 16:25 
Специалист
Специалист

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
сделал в виде:
loop at tab_1.
read table tab_2 with key field_1 = tab_1-field_1
field_2 = tab_1-field_2.
if sy-subrc = 0.
sidx = sy-tabix.
while tab_2-field_1 = tab_1-field_1 and tab_2-field_2 = tab_1-field_2.

...чето делаем

sidx = sidx + 1.
read table tab_2 index sidx.
if sy-subrc <> 0.
exit.
endif.
endwhile.
endif.
endloop.

Отработало за 20сек.


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

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
_gary_ написал(а):
Отработало за 20сек.
2 all
код _gary_ может работать с ошибками на системах 4.0 и 4.6С
2 _gary_
1 огласите pls версию системы на которой работаете
2 select * всегда работает медленней чем select[необходимый список полей]
3 В конструкцию read table tab_2 with key field_1 = tab_1-field_1 field_2 = tab_1-field_2 не повредит добавить transporting no fields


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

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
у нас система 4.6.

про select с необходимыми полями и no-transporting - это все понятно, но это уже от задачи зависит. Я же просто проверял.
Меня интересовал просто сам факт: почему с отсортированой таблицей код работает намного медленнее, чем с неотсортированой.


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

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
не надо обобщать частный случай до тендеции,
1 Видимо в tab_2 field_1 field_2 в каждой итерации составляют малый процент данных.
2 loop .... assigning на любой версии приносят повышение производительности это тоже резерв по скорости.
3 после многократного повтора выборки по одним и тем же данным
данные лежат в кеше базы данных - оттуда и такое радикальное повышение производительности.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 11 2007, 18:34 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
_gary_ написал(а):
Меня интересовал просто сам факт: почему с отсортированой таблицей код работает намного медленнее, чем с неотсортированой.


Эти результаты касаются какого кода, первого со вложенными loop или второго с read?
Read без бинарного поиска ишет последовательно до первого нахождения по ключу. В неотсортированной таблице запись с совпадающим ключем может быть ближе к началу. Случайное совпадение, но результат неожиданный. Надо данные Ваши смотреть, без них конкретные показатели обсуждать бесполезно.


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

Зарегистрирован:
Чт, ноя 02 2006, 18:56
Сообщения: 78
может время тратится на сортировку в бд?
если попробовать так
data tab_dummy like standard table of tab2. "header line от tab2
select ... into table tab_dummy.
tab2[] = tab_dummy.
и дальше как было


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 12 2007, 08:46 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
_gary_ написал(а):
Меня интересовал просто сам факт: почему с отсортированой таблицей код работает намного медленнее, чем с неотсортированой.

Если все еще интересует, ответь на мой предыдущий пост. :)


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

Зарегистрирован:
Чт, ноя 02 2006, 18:56
Сообщения: 78
ИМХО: максимальная производительность будет если сделать так:
data: tab1 type table of typ1,
tab2 type sorted table of typ2 with non-unique key f1 f2,
dummy type table of typ2,
tabix type sy-tabix.
field-symbols: <wa1> type typ1,
<wa2> type typ2.

select .... into table tab1 where ...
select .... into table dummy where ....

* сортировка на appl серваке, а не на бд
sort tab1 by f1 f2.
tab2[] = dummy[].

tabix = 1.
loop at tab1 assigning <wa1>.
"assigning для большой строки (много полей, структ,
"влож. таблицы) лучше чем into

loop at tab2 assigning <wa2>
from tabix "чтоб оптимизировать начало
where f1 = <wa1>-f1
and f2 = <wa1>-f2. " имеено в том порядке как при опред. ключа
tabix = sy-tabix + 1."для старат след итерации в tab1

"do smth...

endloop.

endloop.

ну плюс конечно проверка успешности выборки и т.д. но это уже зависит от того что делать надо (может 2 выборка, и сортироки будут не нужны, если нет первой)

по крайней мере я стараюсь делать примерно так в своих прогах


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Loop
СообщениеДобавлено: Пт, сен 14 2007, 12:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
_gary_ написал(а):
В итоге получилось что второй вариант работает медленне чем первый. почему так?

Похоже первичный вопрос никого не интересует. ;)
Второй вариант явно должен работать быстрее, что я и проверил, так оно и оказалось. Так что ищите кривизну в своем коде, или код в студию. :)


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

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


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

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


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

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