Текущее время: Пн, авг 04 2025, 17:06

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Оптимизация алгоритма поиска
СообщениеДобавлено: Ср, авг 13 2008, 09:07 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, фев 24 2005, 13:26
Сообщения: 261
Откуда: с проекта :)
Всем привет.
Есть простейшая задача.
Имеется прозрачная таблица ZTABLE с полями:

KEY (ключ комбинации признаков)
ATINN (признак)
ATNAM (значение)

с числом записей, предположим, под миллион. Первичный уникальный ключ KEY + ATINN + ATNAM.

Есть внутренняя таблица itab c полями:
ATINN (признак)
ATNAM (значение).

Для всех строк в itab нужно найти существующую комбинацию в ZTABLE (поле KEY), т.е. узнать была ли уже такая комбинация признаков. Алгоритм будет работать в фоне, но тем не менее как оптимальнее (с точки быстродействия) его написать ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, авг 13 2008, 09:19 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Ну если у тебя во внутренней таблице не миллион записей, то проще наверное сделать один SELECT ... FOR ALL ENTRIES, а потом в цикле по выбранным данны удалять записи из первой таблицы. В итоге останутся только не существующие в БД.


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

Зарегистрирован:
Чт, фев 24 2005, 13:26
Сообщения: 261
Откуда: с проекта :)
Среднее число строк в itab около 20. Считывать из ZTABLE во внутренюю таблицу тогда нужно в цикле

loop at itab
select * from ZTABLE into table where ZTABLE-ATINN = itab-ATINN.....
endloop.

Что не есть хорошо, т.к. имеем в среднем 20 считываний по таблице с миллионом записей


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

Зарегистрирован:
Пн, фев 11 2008, 11:54
Сообщения: 359
Откуда: Воронеж
Пол: Мужской
Вам же ответил John Doe
Code:
SELECT * from ztable into CORRESPONDING FIELDS OF TABLE it_ztable
  FOR ALL ENTRIES IN  itab
  WHERE ATINN = itab-ATINN and ATNAM = itab-ATNAM.

Затем проходитесь loop по внутренней табличке. Можно было бы и его написать, просто не понятно какие конкретно результаты вы хотите получить.

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Не забудьте индекс ATINN+ATNAM сделать в таблице ZTABLE.
Хотя смысл именно такой таблицы непонятен - есть же таблицы CABN и KSSK :?

_________________
С уважением,
Удав.


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

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


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

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


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

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