![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как оптимально обработать разделенный запрос [D6]
Андрусь © (2002-12-03 20:37:00)Привет всем!Возникла такая вот проблемка.Работаю с Oracle. Работаю через ODAC/OCI.Есть Датасет,заполнение которого происходит хитрым селектом,который обрывает коннект к серваку "ORA-03113 end-of-file on communication channel". Извращались по-разному,патчи что были поставили,клиента переставили на серваках разных версий пробывали. Пошёл только на 9-ке.
Запрос,в принципе, делится на 3 части,которые можно выполнить по отдельности.2-первых находят f1_start и f1_end
SELECT * FROM tabl1 t1
WHERE t1.field1 BETWEEN :f1_start AND :f1_end
Как их запустить с наименьшей потерей быстродействия.
Проще всего запустить сразу 2 первых,затем передав параметры f1_start и f1_end в основной получить данные,но быстродействие - 3 обращ. к серверу..
Другой вариант - запускать всё в хранимой процедуре,возвращающей
PL/SQL таблицу в виде параметра.Но опять же,кажется, - не лучший вариант.
GarryFV (2002-12-05 19:48:00) [1]SELECT * FROM tabl1 t1
WHERE t1.field1
BETWEEN
(select f1_start from ...)
AND
(select f1_end from ...)
Тока надо быть уверенным, что подзапросы возвращают одно значение
perov (2002-12-05 08:13:00) [2]покажи плиз текст хитрого селекта, который обрывает коннект к серверу?
EternalWonderer (2002-12-04 19:55:00) [3]Текст запроса?