2014-01-28 5 views
1

У меня есть таблицу tbl_Data в MS SQL Server 2008, который, имеющие два поля, ID первична ключ и CustomFields столбца может иметь XML-данные.быстрого извлечения данных из поля типа XML в MS SQL Server

 [ID] [uniqueidentifier] [CustomFields] [xml] NULL

Средние узлы в XML - 25 узлов в каждой записи (некоторые записи, имеющие нулевой, некоторые, имеющие до 70 узлов) подсчитывать Всего запись в tbl_Data: 80000 строк.

Ниже приведены примеры данных для столбца CustomFields.

<Fields> 
<Field Id="StatusName" Value="Approve" /> 
<Field Id="LogNumber" Value="70470" /> 
<Field Id="SubmittedDate" Value="Feb 7 2012 12:00AM" /> 
.. 
<Fields> 

Я пытаюсь выполнить ниже запрос для поиска записей, которые имея LogNumber 70470, этот запрос, принимая 1 минуту для генерации результата.

 SELECT ID FROM [tbl_Data] WHERE 
CustomFields.exist('/Fields/Field[@Title = "LogNumber"]') = 1 
    AND CustomFields.exist('/Fields/Field[@Value="70470"]') = 1

Я попытался применить индекс XML, но, похоже, не было полезно.

Ваше ценное предложение или совет наиболее приветствуются, что вы думаете об улучшении производительности поиска данных. I.e Мне нужно изменить структуру XML?

Благодаря Суреш

ответ

1

Как пояснялось этим ответом here (link), вы можете значительно увеличить производительность XML-запросов с использованием как схемы и индекс в XML-столбцах. В принципе, создайте схему, применимую к вашим данным, измените столбец на этот тип данных, добавьте XML-индекс и прибыль.

В моем случае уничтожение огромного XML-файла для различных форм данных заняло дни по умолчанию. Индекс уменьшил его примерно до 10 часов, а схема уменьшила это на 20 секунд, что было более чем достаточно.

+0

Спасибо за ваш ответ! Я применил полный текстовый индекс в XML и решил проблему производительности, теперь можно запросить данные с помощью поиска подстановочных знаков и быстро работать! – Suresh

 Смежные вопросы

  • Нет связанных вопросов^_^