Просто помните, что представление - это не что иное, как оператор выбора (индексированные представления отличаются). Если у вас есть:
SELECT * FROM TABLE
И это в процедуре, если вы поместили то же самое в представление, а затем сделали:
SELECT * FROM VIEW
В рамках процедуры нет абсолютно никакой разницы между этими двумя. Но если все усложняется, и вы объединяете множество таблиц, то это действительно зависит от того, как к ним обращаются.
Например, если вы создаете представление, которое обращается к 6 таблицам, а затем пишете запрос, который требует только извлечения данных из 3 из этих таблиц, вы можете воспользоваться процессом, называемым упрощением, который происходит в процессе оптимизации, и вы Увидим план, который ссылается только на 3 таблицы. Тем не менее, вы не можете. Если нет, то запрос, который вы бы написали для 3 таблиц, обычно будет выполняться быстрее, чем план для представления, которое обращается к более чем 3 таблицам.
Если вы начнете вкладывать представления, имея представления, которые вызывают представления или присоединяются к представлениям, то вы можете столкнуться с очень серьезным снижением производительности.
В общем, если вы работаете с хранимыми процедурами, я бы посоветовал вам просто написать свои запросы непосредственно к таблицам. Это никак не повлияет на производительность и поможет избежать проблем с вложенными представлениями и упрощением плана.