ДЛЯ XML и производительности - PullRequest
0 голосов
/ 04 августа 2011

Есть ли у кого-нибудь какие-либо советы или рекомендации относительно того, как улучшить производительность в следующем сценарии:

  • У меня есть набор записей прибл. 500 000 строк.
  • Для этого запроса извлекается много данных. Чтобы минимизировать время запроса, я разбил его на несколько небольших запросов; все хранится во временных таблицах с индексами и тому подобное. В конце; Я собираю все меньшие запросы в одну временную таблицу, которая будет служить «основной» записью для окончательного запроса.
  • Текущее время выполнения для вышеуказанного шага составляет примерно 2 минуты (неплохо, учитывая количество извлекаемых данных)
  • Окончательный результат должен быть представлен в формате XML. Когда я пишу свой последний запрос, я использую FOR XML EXPLICIT, чтобы перевести его в правильный формат.
  • Проблема, с которой я сталкиваюсь, заключается в том, что приведенный выше запрос XML занимает более 30 минут, что в данном случае слишком много.

Итак, у меня есть пара вариантов:

  • Я мог бы "предварительно загрузить" эти данные в фактическую таблицу, а затем запросить их вместо использования временных таблиц. Я не уверен, что это отнимет у меня много времени, поскольку проблема заключается не в загрузке данных, а в том, сколько времени потребуется для генерации XML.
  • Приведенный выше XML будет в конечном итоге загружен в нашу кодовую базу C # для загрузки в конечный пункт назначения. Имеет ли смысл просто загружать набор записей в C # и выполнять там преобразование XML вместо того, чтобы делать это на стороне базы данных?
  • Прямо сейчас я использую FOR XML EXPLICIT; Есть ли какие-либо преимущества в производительности, полученные при использовании любого из других режимов XML (RAW, AUTO, PATH)?

Еще раз спасибо.

~ Jim

1 Ответ

2 голосов
/ 04 августа 2011

Это ваш вариант прямо здесь. Преобразование XML будет гораздо более эффективным в C #, чем в SQL.

Приведенный выше XML будет в итоге загружен в нашу кодовую базу C # загружен в конечный пункт назначения. Имеет ли смысл просто загрузить набор записей в C # и выполнить там преобразование XML, вместо того, чтобы делать это на стороне базы данных?

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