Краткий ответ: "Это зависит"
Более длинный ответ: "Это зависит от формы запроса"
Как и в случае любого вопроса о производительности в SQL Server (что лучше: x против y), правильного ответа нет. В случае представлений и sprocs, нет никакого способа надежно предсказать, что будет (если есть) быстрее, если не профилировать запрос.
Я видел, как оба быстрее, и все сводится к тому, как использовалось представление и является ли оно частью более крупного запроса. Я также видел, что представления замедляют запросы, потому что они могут скрыть большую сложность, которая на самом деле не нужна запросу с использованием представления.
Вам нужно оценить, чего вы пытаетесь достичь: если все, что вы делаете, - это хотите получить доступ к строкам таблицы и не хотите использовать вывод как часть другого запроса, я бы выберите хранимую процедуру, особенно если запрос к таблице будет принимать предложение WHERE.
Откуда будет вызываться запрос? Другая часть SQL? Некоторые прикладные рамки? Пользовательский слой доступа к данным? Стоит подумать, как вызывающий код соберет запрос, так как это может повлиять на то, как SQL Server завершит кеширование и повторное использование плана выполнения. Если он просто скрепит кучу динамического SQL, производительность может немного снизиться, поскольку SQL Server может понадобиться каждый раз перестраивать план запроса; так что в этом случае sproc имеет преимущество с кэшированным планом. Если уровень доступа интеллектуален и выполняет параметризованный динамический SQL, в нем может быть не так много.
Вывод: поймите, чего вы хотите достичь. Затем выполните профиль, настройте, настройте и повторяйте до тех пор, пока не будете удовлетворены.