2013-09-28 3 views
3

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

У нас есть несколько сложных видов, которые запрашивают данные. Нет. Мне было поручено создать еще один комплексный вид, но мои инструкции - запрос из других представлений. Заметив некоторые серьезные проблемы с копией данных Production, я заметил, что мой View вызывал представление, которое вызывало другой вид, который вызывал другой вид! (т. е. View A ссылки View B, которые ссылаются на View C, которые ссылаются на View D - в моем случае каждое представление представляет собой запрос по всем таблицам в одной и той же базе данных)

Хотя я знаю принцип взаимозаменяемости в отношении к представлениям и таблицам (т. е. не существует различия между фактическими отношениями и виртуальными отношениями), но могу ли я ожидать проблем с производительностью? Должен ли я сделать представление, которое не ссылается на другое представление?

+3

http://dba.stackexchange.com/questions/5487/is-nested-view-a-good-database-design –

ответ

2

Виды расширены до их выполнения. Не должно быть штрафа за производительность для любого уровня вложенных просмотров.

Если есть потеря производительности, возможно, это связано с тем, что вложенные представления выполняют больше работы, чем вам требуется. SQL Server может только оптимизировать до сих пор. В частности, подсказки запросов или принудительные операции сортировки, такие как select top 100 percent ..., могут замедлять вложенный запрос.

Советуем использовать наиболее читаемую и наиболее удобную альтернативу. Если вы столкнулись с проблемами производительности, достаточно рано рассмотреть возможность оптимизации нескольких просмотров!

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