Не большой поклонник просмотров (не помню, когда я писал в последний раз), но и не запретил бы их полностью. Если ваша база данных позволяет размещать индексы в представлениях, а не только в таблице, вы часто можете значительно улучшить производительность, что делает их лучше. Если вы используете представления, обязательно изучите их индексацию.
Я действительно вижу только необходимость в представлениях для разбиения данных и в чрезвычайно сложных объединениях, которые действительно важны для приложения (в данном случае речь идет о финансовых отчетах, где запуск из одного и того же набора данных для всего может быть критическим). Я знаю, что некоторые инструменты отчетности предпочитают представления над сохраненными процессами.
Я большой сторонник того, чтобы никогда не возвращать больше записей или полей, чем нужно в конкретном случае, и чрезмерное использование представлений приводит к тому, что люди возвращают больше полей (и, как правило, слишком много случаев, слишком много объединений), чем им нужно, что тратит впустую системные ресурсы.
Я также склонен видеть, что люди, которые полагаются на представления (а не разработчик представления - люди, которые их используют) часто не очень хорошо понимают базу данных (поэтому они могут неправильно понять объединения, если не используют вид) и что для меня имеет решающее значение для написания хорошего кода для базы данных. Я хочу, чтобы люди понимали, что они просят БД, а не полагались на какой-то волшебный черный ящик представления. Это все личное мнение, конечно, ваш пробег может варьироваться.
Как и BlaM, лично я не нашел их проще в обслуживании, чем хранимые процы.
Отредактировано в октябре 2010 г. для добавления:
Так как я изначально написал это, у меня была возможность поработать с парой баз данных, разработанных людьми, которые были зависимы от использования представлений. Хуже того, они использовали представления, которые вызывали представления, которые вызывали представления (до такой степени, что в конечном итоге мы достигли предела числа таблиц, которые можно вызвать). Это был театральный кошмар. Потребовалось 8 минут, чтобы получить простое количество (*) записей в одном представлении, и гораздо больше времени, чтобы получить данные. Если вы используете представления, будьте очень осторожны с использованием представлений, которые вызывают другие представления. Вы будете создавать систему, которая, скорее всего, не будет работать при нормальной производительности на производстве. В SQL Server вы можете индексировать только те представления, которые не вызывают другие представления, поэтому при использовании представлений в цепочке происходит то, что для каждого представления должен быть построен весь набор записей, а до тех пор, пока вы не доберетесь до последнее, что применяются критерии условия where. Вам может понадобиться сгенерировать миллионы записей, чтобы увидеть три. Вы можете присоединиться к одной и той же таблице 6 раз, когда вам действительно нужно присоединиться к ней только один раз, вы можете вернуть гораздо больше столбцов, чем нужно в окончательном наборе результатов.