Есть ли у кого-нибудь какие-либо советы или рекомендации относительно того, как улучшить производительность в следующем сценарии:
- У меня есть набор записей прибл. 500 000 строк.
- Для этого запроса извлекается много данных. Чтобы минимизировать время запроса, я разбил его на несколько небольших запросов; все хранится во временных таблицах с индексами и тому подобное. В конце; Я собираю все меньшие запросы в одну временную таблицу, которая будет служить «основной» записью для окончательного запроса.
- Текущее время выполнения для вышеуказанного шага составляет примерно 2 минуты (неплохо, учитывая количество извлекаемых данных)
- Окончательный результат должен быть представлен в формате XML. Когда я пишу свой последний запрос, я использую
FOR XML EXPLICIT
, чтобы перевести его в правильный формат.
- Проблема, с которой я сталкиваюсь, заключается в том, что приведенный выше запрос XML занимает более 30 минут, что в данном случае слишком много.
Итак, у меня есть пара вариантов:
- Я мог бы "предварительно загрузить" эти данные в фактическую таблицу, а затем запросить их вместо использования временных таблиц. Я не уверен, что это отнимет у меня много времени, поскольку проблема заключается не в загрузке данных, а в том, сколько времени потребуется для генерации XML.
- Приведенный выше XML будет в конечном итоге загружен в нашу кодовую базу C # для загрузки в конечный пункт назначения. Имеет ли смысл просто загружать набор записей в C # и выполнять там преобразование XML вместо того, чтобы делать это на стороне базы данных?
- Прямо сейчас я использую
FOR XML EXPLICIT
; Есть ли какие-либо преимущества в производительности, полученные при использовании любого из других режимов XML (RAW
, AUTO
, PATH
)?
Еще раз спасибо.
~ Jim