Являются ли хранимые процедуры Oracle быстрее, чем строковый SQL для приложения Microsoft.NET?

StackOverflow https://stackoverflow.com/questions/828399

Вопрос

Мы разрабатываем приложение Visual Studio.NET 2008 с Oracle 9i в качестве серверной части.Правда ли, что использование хранимых процедур будет быстрее, чем встроенный SQL?Это дискуссия с моими сопрограммистами.

Мы используем ODP.NET (поставщик данных Oracle для .NET) от Oracle.

Спасибо.

Это было полезно?

Решение

Хотя у меня возникает искушение ответить «нет» или «я так не думаю», единственный реальный способ узнать ответ на этот вопрос — это иди и измерь сам.Чтобы это выяснить, используйте профилировщик, например JetBrains dotTrace, или собственный профилировщик TOAD.

Все остальные ответы носят умозрительный характер.

Другие советы

Должен быть.Когда вы отправляете встроенный SQL в базу данных, механизм должен проанализировать его и выполнить.Хранимые процедуры анализируются (и компилируются) во время создания.Так что, по крайней мере, вы выигрываете время анализа.

Я ожидаю, что хранимые процедуры будут работать быстрее почти во всех случаях.
Но это в основном зависит от вашего кода.
Если, например, вы получаете набор результатов из своей базы данных, а затем используете эти данные для выполнения других запросов, вы столкнетесь с большими издержками в сетевом трафике.Это особенно актуально, если вы забыли использовать для запросов одно соединение.
Тогда было бы более эффективно использовать одну хранимую процедуру для возврата агрегированных данных (если это возможно, конечно).

Будет быстрее, если вы создадите свои хранимые процедуры (пакеты PL/SQL) таким образом, чтобы между базой данных и клиентом передавалось меньше данных.

Джон Лимджап сказал:«Все остальные ответы носят умозрительный характер».

В этом утверждении есть большая доля правды.Есть очень много факторов:как настроен сервер БД?Как скорость/надежность сети?Как SQL?Как дела с PL/SQL?Я мог бы написать очень медленный SQL и/или PL/SQL, если бы захотел (и случайно делал это в прошлых проектах!).Так что, если можете, попробуйте оба варианта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top