Использование представлений в SQL - PullRequest
6 голосов
/ 05 марта 2010

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

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

Ответы [ 7 ]

3 голосов
/ 05 марта 2010

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

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

Приветствия

2 голосов
/ 05 марта 2010

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

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

0 голосов
/ 05 марта 2010

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

0 голосов
/ 05 марта 2010

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

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

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

0 голосов
/ 05 марта 2010

Нет.

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

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

0 голосов
/ 05 марта 2010

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

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

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

0 голосов
/ 05 марта 2010

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

...