Анализ XML медленно

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

CREATE TABLE #ChangeSet 
(
    RemarkTypeID TINYINT NOT NULL PRIMARY KEY,
    RemarkText VARCHAR(2500) NOT NULL,
    ListingID INT NOT NULL
)
INSERT INTO #ChangeSet
    (RemarkTypeID, 
    RemarkText,
    ListingID)
SELECT
    T.c.value('@RemarkTypeID[1]','tinyint') AS RemarkTypeID,
    T.c.value('@RemarkText[1]','varchar(2500)') AS RemarkText,
    @ListingID
FROM @RemarksXml.nodes('/Remarks[1]/Remark') AS T(c)

Кроме того, у вас есть представление о структуре анализируемого XML:

  <Remarks>
    <Remark xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" RemarkID="211767" DateTimeCreated="1991-11-19T10:43:50" DateTimeModified="1992-01-01T10:43:50" RemarkTypeID="8" RemarkText="aaaWasher,Dryer,Refriger,Microwav" />
    <Remark xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" RemarkID="211768" DateTimeCreated="1991-11-19T10:43:50" DateTimeModified="1992-01-01T10:43:50" RemarkTypeID="3" RemarkText="aaaell Maintained 3Bd 1.5Ba Semi-Detached Home In Cambridge Gardens. Garage W As Converted Into A Nice Family Room The Outside Is Maintence Free. Includes All Appliances,Security System,Storage Shed,Ceiling Fans And New Carpet.This Home Is Very Well Pricded. Seller Will Consider Fha Or Va Along With Conventional Finacing. This Is A Great Buy." />
 </Remarks>

Есть ли что-нибудь, что я могу сделать для повышения производительности анализа этих узлов XML и настройки этой таблицы temp?

7 голосов | спросил jdm5310 31 MaramThu, 31 Mar 2016 06:03:16 +03002016-03-31T06:03:16+03:0006 2016, 06:03:16

1 ответ


4

Для улучшения производительности синтаксического анализа xml вы можете сделать две основные функции:

  • Внесите переменную xml /column введите , что означает объявление схема xsd на нем. Это заставит проверить xml, что само по себе займет немного времени, но скорость разбора улучшится.
  • Индекс столбца xml (не относится к переменным xml). Вы можете индексировать столбцы xml несколькими способами, в зависимости от ваших требований , Это может дать вам отличную производительность для более сложных запросов и поиска в xml-блоках.
  • Если ваш запрос является частью гораздо большего запроса, я, похоже, помню, что операции xml не распараллеливаются, поэтому вы можете разумно разбить большой запрос и развернуть синтаксический анализ xml в отдельном запросе из остальной части работа.
ответил Daniel Hutmacher 31 MaramThu, 31 Mar 2016 08:42:41 +03002016-03-31T08:42:41+03:0008 2016, 08:42:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132