Я создал 8 разных представлений, и я использую все эти представления внутри представления. Поэтому мне было интересно, прежде чем я пойду дальше с этой идеей. Я хочу знать, влияет ли это на производительность слишком плохо или нет.
Неправильно ли вызывать представления в представлении в sql
Ответ 1
Нет, все в порядке. Во многих случаях я лично считаю предпочтительным писать один взгляд с гигантским и трудно понятным определением. На мой взгляд, использование нескольких видов позволяет вам:
- Инкапсулировать дискретную логику в отдельных представлениях.
- Повторно использовать логику в отдельных представлениях без необходимости повторять логику (устраняя проблемы с обновлением позже).
- Назовите свою логику, чтобы следующий программист мог понять, чего вы пытаетесь выполнить.
Ответ 2
Представления "компилируются" во время создания плана выполнения. Поэтому для их использования существует лишь очень небольшое наказание: дополнительное время, которое требуется SQL Server для поиска определения. Обычно эта задержка не поддается измерению.
Это означает, что использование взглядов для целей, упомянутых Ларри Люстигом, прекрасно и поощрительно.
ОДНАКО: Убедитесь, что вы не вводите ненужные JOINs, используя эту технику. Хотя SQL Server имеет механизмы для устранения ненужных таблиц из запроса, он быстро отказывается, если запрос становится сложным. Выполнение этих дополнительных JOIN может привести к значительному замедлению. Именно по этой причине у многих компаний есть правило без просмотров.
Итак: используйте представления, но не используйте их неправильно.
Ответ 3
Это не плохо для производительности только для того, чтобы быть представлением. Это может добавить некоторую сложность в обслуживании и вызвать дополнительное внимание, когда вы хотите изменить схему базовых таблиц. Если вы использовали представления и присоединились к тем же таблицам, я думаю, что это будет менее эффективно, чем присоединение к таблице один раз в одном представлении.
Ответ 4
Я предпочитаю использовать вложенные представления, при этом каждый вид инкапсулирует и называет несколько сечений данных.
Что касается производительности, это может фактически повысить производительность, если альтернатива требовала, чтобы одни и те же данные запрашивались несколько раз: вложенное представление немного похоже на временную таблицу, снятую один раз.
Лучший и рекомендуемый способ обнаружения последствий для производительности - попробовать обе опции и изучить вывод объяснения.
Ответ 5
Чистый факт запроса представления из представления не имеет каких-либо негативных последствий для производительности. Это не отличается от запроса таблицы из представления.