У меня есть представление, которое создается из базовой таблицы. Это представление является в основном точной копией таблицы без любых условий фильтра, и это имеет все столбцы и записи таблицы.
Есть ли любое преимущество в использовании представления (который является прямой копией таблицы) вместо таблицы непосредственно в моих процедурах подачи заявки или хранимых процедурах.
Одним из преимуществ (или недостатков, в зависимости от вашей точки зрения) является то, что представления позволяют хранить бизнес-логику в SQL-сервере, а не в коде. Если вам нужно легко изменить бизнес без перекомпиляции кода, модификация представления - это быстрый и простой способ сделать это.
Однако лично я предпочитаю, чтобы бизнес-логика приложения определялась в коде :)
.в этом случае нет разницы между представлением и таблицей. view - это не копия таблицы, а что-то вроде сохраненного оператора выбора.
Этот подход может иметь серьезные недостатки с точки зрения производительности.
http://www.sql-server-performance.com/tips/views_general_p1.aspx
Я бы посоветовал по возможности избегать использования представлений.
Может не быть немедленной цели или выгоды, но это дает вам точку абстракции, которая может обеспечить архитектурные или основанные на безопасности преимущества в более поздний момент времени.
По сути, представление можно считать контрактом данных, который в будущем позволит базовой структуре гибко изменяться вплоть до определенного момента без осознания этого внешним миром.
С точки зрения безопасности, в какой-то момент в будущем может быть вставлен пункт where, который начнет обеспечивать фильтрацию/безопасность на уровне строк, в то время как прямой доступ к таблице предотвращает любые подобные перемещения в будущем.
Представления можно рассматривать как логический слой поверх физического слоя (таблица) В вашем случае на данный момент этот слой настолько тонок, что его ценность можно поставить под сомнение. Однако со временем это может оказаться не так. Использование представления для доступа к таблице практически ничего не стоит, но изолирует ваш код от возможных изменений физической модели.
Но вы должны знать, что способ работы представлений немного отличается, так как в конечном итоге вы получаете некоторый избыток на стороне БД.
Представление работает следующим образом: выполнение Select * и последующая фильтрация столбцов, которые вы добавляете в него.
Мне было бы очень утомительно использовать для этого представления, если не было серьезных проблем с безопасностью.
Можно создать хранимую процедуру, которая берет данные прямо из таблицы. Таким образом, вы можете взять максимум индекса и все такое.
Ура
Нет.
За исключением индексированных представлений, представления действительно полезны только для того, чтобы очистить SQL-очиститель для чтения - выполнение запроса, содержащего представление, по сути то же самое, что выполнение запроса с определением представления, скопированным и вставленным в запрос.
Я бы не одобрял использование сложных представлений таким образом, поскольку, хотя это делает запрос более чистым, он делает процесс диагностики более болезненным (поскольку вам нужно просмотреть все представления, чтобы понять, что такое исходный запрос. выполнение)