Вот несколько ошибок для хранимых процедур с несколькими наборами записей:
Они затрудняют повторное использование кода. Если вы выполняете несколько запросов, есть вероятность, что вы сможете повторно использовать один из этих запросов на другой странице.
Они усложняют юнит-тестирование. Каждый раз, когда вы вносите изменения в один из запросов, вам необходимо протестировать все результаты. Если что-то изменилось, вам нужно разобраться, какой запрос не прошел модульный тест.
Они усложняют настройку производительности позже. Если за вами приходит другой администратор базы данных, чтобы помочь повысить производительность, им приходится делать больше нарезки и нарезки кубиками, чтобы выяснить, откуда возникают проблемы. Затем объедините это с проблемой повторного использования кода - если они оптимизируют один запрос, этот запрос может быть использован в нескольких различных хранимых процессах, а затем им придется исправить все из них - что снова приводит к дополнительному модульному тестированию.
Они значительно усложняют обработку ошибок. Четыре запроса в хранимой процедуре могут быть выполнены успешно, а пятый не выполнен. Вы должны планировать это.
Они могут увеличить проблемы с блокировкой и вызвать загрузку в TempDB. Если ваши хранимые процессы разработаны так, что требуют повторяющихся чтений, то чем больше запросов вы добавляете в хранимый процесс, тем дольше он собирается выполнить, и чем больше времени потребуется, чтобы вернуть эти результаты обратно на сервер приложений. Это увеличенное время означает более высокий уровень конкуренции за блокировки, и тем больше SQL Server нужно хранить в TempDB для контроля версий строк. Вы упомянули, что у вас много чтения, поэтому эта конкретная проблема не должна быть для вас слишком серьезной, но вы должны знать об этом, прежде чем использовать этот молот в приложении с интенсивной записью.