Оптимизация процесса, который требует удаленного просмотра - PullRequest
0 голосов
/ 17 мая 2018

У меня есть два сервера, один - dev, а другой - datalake.

У меня есть инструмент графического интерфейса, который вызывает хранимый процесс usp_get_data на dev, и этому процессу разработки нужны различные данные из таблиц dev и некоторые данные с сервера datalake с использованием связанного сервера.Из dev и inside usp_get_data я вызываю один процесс usp_getdata_datalake, который использует динамический запрос для разных сценариев и извлекает данные со связанного сервера, используя datalake.datalakedb.dbo.sp_executesql @dynamicquery.

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

Я хочу получить данные из одного медленного представления datalake во временной таблице, а затем при использованиидинамический qyery я могу использовать эту временную таблицу в динамическом qyery, чтобы он не получал представление снова и снова для оптимизации, поскольку метод existinv медленный, но временная таблица недоступна в datalake, так как я создал ее в dev env перед циклом,

Что мне делать, чтобы оптимизировать мой код.

1 Ответ

0 голосов
/ 18 мая 2018

Ну, для начала я бы посмотрел на Предполагаемый план выполнения в SSMS: Переход к оценочному плану выполнения в SSMS

Оттуда вы можете увидеть реальную дроссельную точку / ресурсоемкийблоки в вашей процедуре SQL, которые могут служить отправной точкой для оптимизации:

Пример плана выполнения

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

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