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

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


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

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


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

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