У меня есть база данных Oracle 9, из которой мое приложение Delphi 2006 считывает данные в TSimpleDataSet
, используя такой SQL-оператор, как этот (на самом деле он более сложный, конечно):
select * from myschema.mytable where ID in (1, 2, 4)
Мои приложения запускаются и выполняют этот запрос довольно часто в течение дня, каждый раз с различными значениями в предложении in
.
Мои администраторы баз данных уведомили меня, что это создает чрезмерную нагрузку на сервер базы данных, так как запрос повторно анализируется при каждом запуске. Они предложили использовать связывать переменные вместо построения оператора SQL на клиенте.
Я знаком с использованием параметризованных запросов в Delphi, но из статьи, приведенной выше, я чувствую, что это не совсем те переменные связывания. Кроме того, мне понадобятся эти подготовленные операторы для работы с различными прогонами приложения.
Есть ли способ подготовить оператор, содержащий предложение in
, один раз в базе данных, а затем выполнить его с другими параметрами, переданными из TSimpleDataSet
, чтобы его не нужно было повторно анализировать каждый раз, когда мое приложение бежать?