Этот вопрос часто задают, и здесь - хороший пост на эту тему.
Однако я лично сказал бы, что избегайте сложной логики в хранимых процедурах, которую трудно поддерживать позже, и это не так.лучшее место, чтобы положить его.ORM мапперы в настоящее время используются довольно широко, и некоторые из более крупных (Hibernate / NHIbernate, EF и т. Д.) Все производят оптомизированные запросы и имеют отличные стратегии кэширования.
Также избегайте системы с большим количеством хранимых процедур (I ').Я видел систему с более чем 4 тыс. сохраненных процедур и, поверьте, вы не хотите туда заходить).
Редактировать
Я должен был расширить свой ответ иСделайте это сейчас, однако хранимые процедуры имеют большое применение, потому что они выполняются на самом сервере и отлично подходят для обработки больших объемов данных, а не для выкупа их по сетевому соединению, и вам может потребоваться несколько обращений к базе данных.чтобы получить тот же результат, я склоняюсь к выборке в хранимой процедуре, большинство ORMS может выполнить sproc и вернуть сопоставленные результаты, и это добавляет к богатству решения orm.
Однако, если вы найдете всевы выполняете sprocs исключительно через ORM, тогда вам на самом деле не нужен orm.Таким образом, в наши дни его производительность производительности.Что касается больших наборов данных.Также, как правило, существует много дезинформированных мнений / привычек от разработчиков и администраторов баз данных, что может привести к воинственному положению вещей, когда людям говорят «весь код должен быть в sprocs» или «весь код должен быть сгенерированк слову "это глупое положение вещей.
Еще одна вещь, на которую я хотел бы обратить внимание: я видел sprocs со всевозможными ошибками в них, и, по нашей природе, разработчики программного обеспечения обычно не лучшие люди.писать sql так, как мы не склонны мыслить в стиле "set-like".Это не значит, что разработчики не могут писать отличный SQL-код, это просто не наша специализация.
Сколько раз вы видели sproc, который проходит по пути кода один раз ... кэширует свой план, а затем становится неоптимальным какрезультат, потому что каждый последующий раз он не идет по этому пути ... Я много видел.