Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureБаза данных SQL в Microsoft Fabric
Создает новый селективный XML-индекс для указанной таблицы и XML-столбца. Селективные XML-индексы повышают производительность индексирования и выполнения XML-запросов, индексируя только подмножества узлов, к которым обычно выполняются запросы. Кроме того, вы можете создавать вторичные селективные XML-индексы. Дополнительные сведения см. в разделе Создание, изменение и удаление вторичных селективных XML-индексов.
Соглашения о синтаксисе Transact-SQL
Синтаксис
CREATE SELECTIVE XML INDEX index_name
ON <table_object> (xml_column_name)
[WITH XMLNAMESPACES (<xmlnamespace_list>)]
FOR (<promoted_node_path_list>)
[WITH (<index_options>)]
<table_object> ::=
{ database_name.schema_name.table_name | schema_name.table_name | table_name }
<promoted_node_path_list> ::=
<named_promoted_node_path_item> [, <promoted_node_path_list>]
<named_promoted_node_path_item> ::=
<path_name> = <promoted_node_path_item>
<promoted_node_path_item>::=
<xquery_node_path_item> | <sql_values_node_path_item>
<xquery_node_path_item> ::=
<node_path> [AS XQUERY <xsd_type_or_node_hint>] [SINGLETON]
<xsd_type_or_node_hint> ::=
[<xsd_type>] [MAXLENGTH(x)] | node()
<sql_values_node_path_item> ::=
<node_path> AS SQL <sql_type> [SINGLETON]
<node_path> ::=
character_string_literal
<xsd_type> ::=
character_string_literal
<sql_type> ::=
identifier
<path_name> ::=
identifier
<xmlnamespace_list> ::=
<xmlnamespace_item> [, <xmlnamespace_list>]
<xmlnamespace_item> ::=
<xmlnamespace_uri> AS <xmlnamespace_prefix>
<xml_namespace_uri> ::=
character_string_literal
<xml_namespace_prefix> ::=
identifier
<index_options> ::=
(
| PAD_INDEX = { ON | OFF }
| FILLFACTOR = fillfactor
| SORT_IN_TEMPDB = { ON | OFF }
| IGNORE_DUP_KEY = OFF
| DROP_EXISTING = { ON | OFF }
| ONLINE = OFF
| ALLOW_ROW_LOCKS = { ON | OFF }
| ALLOW_PAGE_LOCKS = { ON | OFF }
| MAXDOP = max_degree_of_parallelism
)
Аргументы
index_name
Имя создаваемого нового индекса. Имена индексов должны быть уникальными в пределах таблицы, но не обязательно должны быть уникальными в пределах базы данных. Имена индексов должны удовлетворять правилам для идентификаторов.
<table_object> — таблица, которая содержит индексируемый XML-столбец. Используйте один из следующих форматов:
database_name.schema_name.table_namedatabase_name..table_nameschema_name.table_nametable_name
xml_column_name
Имя XML-столбца, содержащего индексируемые пути.
[WITH XMLNAMESPACES (<xmlnamespace_list>>)] Список пространств имен, используемых индексируемыми путями. Сведения о синтаксисе предложения WITH XMLNAMESPACES см. в статье WITH XMLNAMESPACES (Transact-SQL).
FOR (<promoted_node_path_list>) — список путей, которые нужно индексировать, с необязательными указаниями по оптимизации. Дополнительные сведения о путях и указаниях по оптимизации, которые вы можете указывать в инструкции CREATE или ALTER, см. в разделе Задание путей и указания по оптимизации для селективных XML-индексов.
WITH <index_options> — дополнительные сведения о параметрах индекса см. в статье CREATE XML INDEX (селективные XML-индексы).
Рекомендации
Создание селективного XML-индекса вместо обычного XML-индекса в большинстве случаев приводит к повышению производительности и более эффективному использованию хранилища. Однако селективный XML-индекс не рекомендуется использовать при наличии следующих условий.
Необходимо сопоставить большое количество путей узлов.
Необходимо поддерживать запросы на неизвестные элементы или элементы в неизвестных расположениях.
Ограничения
Дополнительные сведения об ограничениях см. в разделе Селективные XML-индексы (SXI).
Безопасность
Разрешения
Необходимо разрешение ALTER для таблицы или представления. Пользователь должен быть членом предопределенной роли сервера sysadmin или предопределенных ролей базы данных db_ddladmin и db_owner.
Примеры
В следующем примере показан синтаксис для создания селективного XML-индекса. Он также содержит несколько вариантов синтаксиса для описания индексируемых путей с указаниями по оптимизации.
CREATE TABLE Tbl ( id INT PRIMARY KEY, xmlcol XML );
GO
CREATE SELECTIVE XML INDEX sxi_index
ON Tbl(xmlcol)
FOR(
pathab = '/a/b' as XQUERY 'node()',
pathabc = '/a/b/c' as XQUERY 'xs:double',
pathdtext = '/a/b/d/text()' as XQUERY 'xs:string' MAXLENGTH(200) SINGLETON,
pathabe = '/a/b/e' as SQL NVARCHAR(100)
);
В следующем примере содержится предложение WITH XMLNAMESPACES.
CREATE SELECTIVE XML INDEX on T1(C1)
WITH XMLNAMESPACES ('https://www.tempuri.org/' as myns)
FOR ( path1 = '/myns:book/myns:author/text()' );
См. также
Выборочный XML-индекс (SXI)
Создание, изменение и удаление селективных XML-индексов
Задание путей и указания по оптимизации для селективных XML-индексов