Рекомендация: один сохраненный процесс, который всегда возвращает все поля или разные хранимые процедуры для каждого необходимого набора полей? - PullRequest
3 голосов
/ 17 сентября 2010

Если у меня есть таблица с полем 1, полем 2, полем 3, полем 4 и для одного случая нужны только поле 1 и поле 2, а для другого мне нужны поле 3 и поле 4, а еще одному нужны все они .... Лучше иметь SP для каждой нужной мне комбинации или один SP, который всегда возвращает их все?

Ответы [ 4 ]

2 голосов
/ 17 сентября 2010

Если пропускная способность сети и использование памяти важнее, чем часы работы и простота проекта, создайте отдельный SP для каждой задачи.Иначе нет смысла.(выгоды не так уж велики, и они заметны только в том случае, если набор строк очень велик или много одновременных запросов)

2 голосов
/ 17 сентября 2010

Очень важный вопрос:

Написание многих сохраненных процедур, выполняющих один и тот же запрос, заставит вас потратить много времени на документирование и извинения перед будущими сопровождающими.

Закаждый раз, когда кто-то хочет внести изменение, он должен подумать, должно ли оно применяться ко всем сохраненным процессам, или к некоторым или только к одному ...

Я бы сделал только один сохраненный процесс.

2 голосов
/ 17 сентября 2010

У меня была бы только одна хранимая процедура, поскольку ее будет проще поддерживать.

Нужно ли это быть хранимой процедурой?Вы можете переписать его как представление, а затем просто выбрать нужные столбцы.

0 голосов
/ 17 сентября 2010

Как правило, рекомендуется выбирать только те столбцы, которые нам нужны для определенной цели.Это особенно верно для таблиц, которые имеют:

  • много столбцов
  • столбцы больших объектов
  • конфиденциальные или ограниченные данные

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

Решения бывают разные и разнообразные, и действительно зависят от характера приложений.Представления могут помочь, хотя они имеют одни и те же проблемы обслуживания.Динамический SQL - другой подход.Мы можем написать сложные процедуры, которые возвращают много разных наборов результатов в зависимости от входных параметров.Черт, иногда мы можем даже написать операторы SQL в реальном приложении.

О, и есть простая процедура, которая в основном заключает в себе SELECT * FROM some_table, но сопровождается собственным набором проблем.

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