Работа с нереляционной базой данных (IDMS кто-нибудь?) Через соединение ODBC квалифицируется как один из тех случаев, когда курсоры и динамический SQL кажутся единственным маршрутом.
select * from a where a=1 and b in (1,2)
Для ответа
требуется 45 минут, в то время как перезапись для использования наборов ключей без условия in будет выполняться менее чем за 1 секунду:
select * from a where (a=1 and b=1)
union all
select * from a where (a=1 and b=2)
Если оператор in для столбца B содержит 1145 строк, использование курсора для создания операторов indidivudal и их выполнения в качестве динамического SQL намного быстрее, чем при использовании предложения in. Глупый, эй?
И да, в реляционной базе данных нет времени использовать курсор. Я просто не могу поверить, что натолкнулся на случай, когда цикл курсора на несколько величин быстрее.