Действительно ли возможно установить индекс в столбце XML на SQL Server 2005 / SQL Server 2008?

У меня есть приложение, которое хранит xml документы в столбце на SQL Server. Структура XML-документа подобна тому ниже:

<document>
    <item>
        ...
        <phoneNumber>0123456789</phoneNumber>
        ....
    </item>
    <item>
        ...
        <phoneNumber>9876543210</phoneNumber>
        ....
    </item>
    ...
</document>

В основном этот столбец хранит ряд клиентской информации. XML-документы могут иметь различные дочерние элементы в <объект> элемент, тем не менее, некоторые из этих дочерних элементов содержатся во всех документах (например, <phoneNumber> элемент в вышеупомянутом примере).

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

<document>
    <item>
        <firstName>Carlos</firstName>
        <lastName>Loth</lastName>
        <phoneNumber>0123456789</phoneNumber>
    </item>
    <item>
        <firstName>Alberto</firstName>
        <lastName>Tomatis</lastName>
        <phoneNumber>987654321</phoneNumber>
    </item>
</document>

И другая строка, содержащая этот документ

<document>
    <item>
        <orderNumber>XYZ</orderNumber>
        <phoneNumber>0123456789</phoneNumber>
    </item>
    <item>
        <orderNumber>ABC</orderNumber>
        <phoneNumber>987654321</phoneNumber>
    </item>
</document>

Так, мой вопрос, это - он возможный создать индекс на том столбце XML на основе document/item/phoneNumber элемента? Я должен выполнить запрос, который возвращает информацию, хранившую в других "фиксированных известных" столбцах на основе phoneNumber информации.

Какие-либо предложения или идеи?

Заранее спасибо, Carlos Loth.

6
задан CARLOS LOTH 5 February 2010 в 18:35
поделиться

1 ответ

Да.
SQL Server 2005 поддерживает четыре различных типа XML индексов. Поскольку XML-индекс несколько отличается от реляционного индекса, необходимо знать об их внедрении, прежде чем приступать к их использованию с максимальной эффективностью. Существует один "первичный индекс XML" и три различных вкуса "вторичного индекса XML".

Для получения более подробной информации см. эту статью MSDN

Прежде чем определять вторичные XML-индексы, необходимо создать первичный XML-индекс:

CREATE PRIMARY XML INDEX xml_idx ON your_table(xml_column)
CREATE XML INDEX xml_idx ON your_table(xml_column) FOR PROPERTY

Создайте документацию по XML-индексу

1
ответ дан 17 December 2019 в 18:15
поделиться
Другие вопросы по тегам:

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