powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / С какой версии появились селективные XML-индексы?
9 сообщений из 9, страница 1 из 1
С какой версии появились селективные XML-индексы?
    #40065418
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сабж. В документации написано "все поддерживаемые версии", но пока ещё вполне используются и 2005-й, и 2008-й, и в них этих селективных индексов нет. В 2014-м уже есть (а 2012-го у меня под рукой нет). Хотелось бы точно знать, с какой версии это существует.
Наличие проверяется легко: вот такой код
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
use tempdb
go
create table #t (
  id int identity not null primary key,
  xdata xml not null
)
go
insert into #t(xdata) values (N'<root/>');
go
create selective xml index tmp_xml_index on #t(xdata)
for(
  path_item = '/root' as xquery 'node()'
);
go
drop table #t
go


должен отработать без ошибок.
Спасибо.
...
Рейтинг: 0 / 0
С какой версии появились селективные XML-индексы?
    #40065430
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно тут поискать - https://docs.microsoft.com/ru-ru/previous-versions/sql/
...
Рейтинг: 0 / 0
С какой версии появились селективные XML-индексы?
    #40065431
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Msg 9539, Level 16, State 1, Line 1
Selective XML Index feature is not supported for the current database version

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Microsoft SQL Server 2012 (SP4-GDR) (KB4583465) - 11.0.7507.2 (X64)
Nov 1 2020 00:48:37
Copyright (c) Microsoft Corporation
Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 <X64> (Build 9600: )
...
Рейтинг: 0 / 0
С какой версии появились селективные XML-индексы?
    #40065433
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Вообще они должны быть доступны с 2012 версии.

https://docs.microsoft.com/ru-ru/previous-versions/sql/sql-server-2012/jj670104(v=sql.110)

там есть особенность что по умолчанию его использование на базе вырублено.
что бы можно было его использовать нужно пометить базу к его применению с помощью процедурки sp_db_selective_xml_index
...
Рейтинг: 0 / 0
С какой версии появились селективные XML-индексы?
    #40065435
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222, felix_ff,
понятно, спасибо.

И ещё вопрос, раз уж пошла такая пьянка. Согласно документации , есть ещё такая штука, как вторичный селективный xml-индекс (sys.xml_indexes.xml_index_type=3). Но что они из себя представляют, и как они создаются - не могу найти вообще никаких упоминаний. В той же документации - только описание и создание обычного селективного. Никому с вторичными селективными не доводилось иметь дело?
...
Рейтинг: 0 / 0
С какой версии появились селективные XML-индексы?
    #40065451
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

вторичный селективный xml индекс создается на основе существующего обычного селективного xml индекса, он используюет один из путей фильтра основного селективного индекса. по объему он меньше чем основной

вторичный xml индекс рассматривайте как ситуацию в отношении обычных реляционных класстерный - некластерный.
в данном случае вторичный xml индекс будет выступать в роли некластерного с фильтрующим предикатом

это видно даже по метаданным.

вот пример:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
drop table if exists [dbo].[tbl_XML1], [dbo].[tbl_XML2]
create table [dbo].[tbl_XML1] ([RID] BIGINT IDENTITY(1, 1) PRIMARY KEY CLUSTERED,
                              [Date] DATETIME,
                              [XmlData] XML);

go
create selective xml index sxi_1 on [dbo].[tbl_XML1]([XmlData])
for (
    abc = '/a/b/c' as XQUERY 'node()',
    abc_val = '/a/b/c/text()' AS SQL INT
);
go

create xml index sxi_2 on [dbo].[tbl_XML1] ([XmlData])
USING XML INDEX sxi_1 for (
  abc_val
);
go



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
insert into [dbo].[tbl_XML1] values (getdate(), '
<root>
   <person>
      <name>Mark</name>
      <surName>Denver</surName>
      <age>30</age>
   </person>
</root>')

insert into [dbo].[tbl_XML1] values (getdate(), '
<a>
  <b id="1">
    <name>Mark</name>
    <c>30</c>
  </b>
  <val>100</val>
</a>
')


insert into [dbo].[tbl_XML1] values (getdate(), '
<a>
  <b id="2">
    <name>Adam</name>
    <c>35</c>
  </b>
  <b>
    <c id="30"/>
  </b>
  <val>100</val>
</a>
')



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select object_name(o.parent_object_id) as [parent],
       o.type_desc + ' : ' + object_name(i.object_id) as [index_owner],
       i.name as [index_name],
       i.index_id,
       i.filter_definition, p.rows, i.index_id, i.has_filter, i.is_unique,
       i.type, o.schema_id, p.object_id, p.hobt_id, p.index_id, i2.name, i2.type_desc
from sys.indexes i
    left join sys.partitions p on p.object_id = i.object_id
    left join sys.objects o on o.object_id = i.object_id
    left join sys.indexes i2 on i2.object_id = p.object_id and i2.index_id = p.index_id
where i.name like 'sxi%'



по сути вторичный селективный xml индекс от просто вторичного xml индеса мало чем отличается, просто он строится по пути фильтра первичного селективного xml индеса, а вторичный xml индекс вместо ветки указывает одно из PATH/VALUE/PROPERTY но строится по всему дереву объектов xml документа. вобщем это аналоги реляционных некластерных индексов и фильтрованных некластерных индексов.
...
Рейтинг: 0 / 0
С какой версии появились селективные XML-индексы?
    #40065467
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

спасибо, понятно. Просто из документации не особенно явно следует, что в create xml index using - он не только для primary xml index, но и для существующего selective index.
...
Рейтинг: 0 / 0
С какой версии появились селективные XML-индексы?
    #40065706
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

"все поддерживаемые версии"
автор но пока ещё вполне используются и 2005-й, и 2008-й
Эти версии сняты с поддержки, насколько я знаю.
...
Рейтинг: 0 / 0
С какой версии появились селективные XML-индексы?
    #40066347
Доступные селективные индексы начиная с 2012 SP1

Отдельно их включить нужно если устанавливался вначале RTM а потом на него сервис паки:

Код: sql
1.
2.
EXEC sys.sp_db_selective_xml_index @dbname = NULL, @selective_xml_index = 'ON'
GO
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / С какой версии появились селективные XML-индексы?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]