-1

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

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

+0

Вложенные представления сложнее понять и отладить для нас и оптимизатора, а также –

+0

Что значит «есть ли способ»? Это называется написание кода. Я что-то упускаю? –

ответ

1

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

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

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

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

1

Nope .... Вам необходимо обходное решение.

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

1

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

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

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

0

«Есть ли способ, как SQL Server может предоставить мне запрос ...»

No. Волшебно производить комбинированную SQL для вас не доступны, что я знаю ,

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