Использование представлений в SQL

У меня есть представление, которое создается из базовой таблицы. Это представление является в основном точной копией таблицы без любых условий фильтра, и это имеет все столбцы и записи таблицы.

Есть ли любое преимущество в использовании представления (который является прямой копией таблицы) вместо таблицы непосредственно в моих процедурах подачи заявки или хранимых процедурах.

6
задан Brian Tompsett - 汤莱恩 23 May 2017 в 21:08
поделиться

7 ответов

Одним из преимуществ (или недостатков, в зависимости от вашей точки зрения) является то, что представления позволяют хранить бизнес-логику в SQL-сервере, а не в коде. Если вам нужно легко изменить бизнес без перекомпиляции кода, модификация представления - это быстрый и простой способ сделать это.

Однако лично я предпочитаю, чтобы бизнес-логика приложения определялась в коде :)

.
2
ответ дан 17 December 2019 в 04:45
поделиться

в этом случае нет разницы между представлением и таблицей. view - это не копия таблицы, а что-то вроде сохраненного оператора выбора.

0
ответ дан 17 December 2019 в 04:45
поделиться

Этот подход может иметь серьезные недостатки с точки зрения производительности.

http://www.sql-server-performance.com/tips/views_general_p1.aspx

Я бы посоветовал по возможности избегать использования представлений.

0
ответ дан 17 December 2019 в 04:45
поделиться

Может не быть немедленной цели или выгоды, но это дает вам точку абстракции, которая может обеспечить архитектурные или основанные на безопасности преимущества в более поздний момент времени.

По сути, представление можно считать контрактом данных, который в будущем позволит базовой структуре гибко изменяться вплоть до определенного момента без осознания этого внешним миром.

С точки зрения безопасности, в какой-то момент в будущем может быть вставлен пункт where, который начнет обеспечивать фильтрацию/безопасность на уровне строк, в то время как прямой доступ к таблице предотвращает любые подобные перемещения в будущем.

0
ответ дан 17 December 2019 в 04:45
поделиться

Представления можно рассматривать как логический слой поверх физического слоя (таблица) В вашем случае на данный момент этот слой настолько тонок, что его ценность можно поставить под сомнение. Однако со временем это может оказаться не так. Использование представления для доступа к таблице практически ничего не стоит, но изолирует ваш код от возможных изменений физической модели.

0
ответ дан 17 December 2019 в 04:45
поделиться

Но вы должны знать, что способ работы представлений немного отличается, так как в конечном итоге вы получаете некоторый избыток на стороне БД.

Представление работает следующим образом: выполнение Select * и последующая фильтрация столбцов, которые вы добавляете в него.

Мне было бы очень утомительно использовать для этого представления, если не было серьезных проблем с безопасностью.

Можно создать хранимую процедуру, которая берет данные прямо из таблицы. Таким образом, вы можете взять максимум индекса и все такое.

Ура

3
ответ дан 17 December 2019 в 04:45
поделиться

Нет.

За исключением индексированных представлений, представления действительно полезны только для того, чтобы очистить SQL-очиститель для чтения - выполнение запроса, содержащего представление, по сути то же самое, что выполнение запроса с определением представления, скопированным и вставленным в запрос.

Я бы не одобрял использование сложных представлений таким образом, поскольку, хотя это делает запрос более чистым, он делает процесс диагностики более болезненным (поскольку вам нужно просмотреть все представления, чтобы понять, что такое исходный запрос. выполнение)

0
ответ дан 17 December 2019 в 04:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: