Использование оператора CASE в хранимой процедуре Oracle - PullRequest
2 голосов
/ 22 октября 2010

У меня есть приложение Windows .Net 3.5. Один из модулей использует хранимый процесс Oracle, который возвращает набор записей клиенту C #.

Я просто хочу знать, какой из них лучше средиследующие дваудобочитаемость кода и производительность.]:

1. Если я записываю несколько операторов CASE в сам хранимый процесс (SP), то количество записей составляет около 125. Вот код SP выглядит немного грязно.Но с другой стороны, число строк, возвращаемых клиенту, меньше.

2. Если я не использую оператор CASE, то количество записей равно @ 375. В этом подходе я переместу"case" логика SP для уровня C # middler ... возможно, используется LINQ / делегаты ... Здесь код SP более чистый, но количество возвращаемых записей велико.

Итак, я пойдус подходом 1 или 2?

Спасибо за чтение.

Ответы [ 2 ]

4 голосов
/ 22 октября 2010

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

"Здесь код SP чище, но большое количество возвращенных записей. "

Код гигиены в глазах смотрящего. Я предпочитаю иметь программные блоки, которые являются правильными сами по себе, а не полагаться на внешние процессы, чтобы все исправить. Особенно внешние процессы, которые находятся на других архитектурных уровнях.

0 голосов
/ 22 октября 2010

Это зависит от нагрузки на сервер и политики безопасности.Я предпочитаю 1), но если вам нужен действительно доступный сервер SQL, вы должны предпочесть 2) для облегчения загрузки сервера SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...