Представление SQL из представления работает медленно - PullRequest
0 голосов
/ 17 декабря 2018

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

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Возможно, вы используете некоторые фильтры как для внутреннего (быстрого), так и для внешнего (медленного) просмотра.Убедитесь, что фильтры, используемые во внешнем представлении, лучше всего «связаны» с внутренним представлением.Наилучшее «связанное» означает, что если, например, во внешнем представлении вы используете еще несколько таблиц и присоединяетесь к внутреннему представлению, попробуйте также объединиться со столбцами фильтра или с базовой таблицей с более низкой детализацией.

0 голосов
/ 17 декабря 2018

Я провел небольшое исследование и могу заключить, что вам будет трудно поддерживать эффективные вложенные представления.Короче говоря, у вашего оптимизатора запросов SQL Server будет почти невозможное время, чтобы выяснить, как быстро выполнить ваш запрос.В лучшем случае он должен выполнить три оператора: исходный оператор, вид 1, вид 2 (вложенный).Без индексов для таблиц и представлений производительность будет постоянно снижаться из-за большого количества операций.

Было бы намного лучше, если бы вы искали альтернативное решение для вашего вложенного представления, например, реплицировали SELECT утверждение с первого взгляда в вашем вложенном представлении.Дублирование также далеко не идеальное, но это означает, что вашему оптимизатору не придется работать так усердно.Вы также можете посмотреть применение индексов к вашим представлениям .Если все сделано правильно, вы улучшите производительность SELECT, пожертвовав скоростью при выполнении операций INSERT.Это следует делать, если вы не ожидаете, что ваша исходная таблица будет меняться слишком часто, но, вероятно, это лучшее решение, если вы не можете реструктурировать макет представления.

...