Мы используем ODP.NET для выполнения запросов к базам данных Oracle, и обычно он работает нормально. Однако в этой базе данных есть конкретная база данных и конкретное представление, к которому мы просто не можем выполнить запрос из .NET. Например:
SELECT some_varchar_field FROM the_view WHERE ROWNUM < 5;
Если я выполню этот запрос из Oracle SQL Developer, он завершится менее чем за секунду. Если я выполняю идентичный запрос из нашего приложения .NET, использующего ODP.NET, оно зависает и в итоге выдает ошибку «ORA-03135: соединение потеряло контакт». Я думаю, что ограничение всего несколькими строками исключает вероятность того, что это проблема FetchSize.
Существуют и другие запросы, которые я могу успешно выполнить, но они медленнее в нашей программе, чем в SQL Developer. Опять же, я понимаю, что SQL Developer изначально получает данные только для первых 50 строк, но я думаю, что условие ROWNUM исключает это из уравнения.
Что может отличаться в соединении или команде, которые использует Oracle SQL Developer, от той, которую использует наше приложение, что может привести к разнице в скорости?
К сожалению, у меня нет доступа к серверу (кроме как для выполнения запросов Oracle к нему).
Спасибо.
ОБНОВЛЕНИЕ: Я пытался выполнить тот же запрос с поставщиком Microsoft от Oracle, и он выполняется очень быстро. К сожалению, этот поставщик устарел, так что это не долгосрочное решение.