2010-03-05 8 views
6

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

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

+0

Hi Avg, если какой-либо из этих ответов был полезен, пожалуйста, подумайте о том, чтобы отметить один из них, как принято. Это считается хорошим манером, а также побуждает других отвечать на ваши вопросы в будущем. :) –

ответ

0

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

0

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

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

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

+0

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

0

Nope.

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

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

3

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

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

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

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

Приветствия

0

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

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

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

2

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

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

0

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

+0

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

+0

@Ian: Все имеет стоимость; вопрос в том, что он перевешивает выгоду. Я не читал никаких заслуживающих доверия исследований, которые определяют взгляды как точку боли в производительности. Конечно, неправильное использование API может привести к тому, что сервер окажется на коленях, но это вряд ли является ошибкой API. –

Смежные вопросы