Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / С какой версии появились селективные XML-индексы? / 9 сообщений из 9, страница 1 из 1
24.04.2021, 14:53
    #40065418
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С какой версии появились селективные XML-индексы?
Сабж. В документации написано "все поддерживаемые версии", но пока ещё вполне используются и 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
24.04.2021, 15:39
    #40065430
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С какой версии появились селективные XML-индексы?
Можно тут поискать - https://docs.microsoft.com/ru-ru/previous-versions/sql/
...
Рейтинг: 0 / 0
24.04.2021, 15:40
    #40065431
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С какой версии появились селективные XML-индексы?
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
24.04.2021, 15:46
    #40065433
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С какой версии появились селективные XML-индексы?
Сон Веры Павловны,

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

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

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

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

вторичный селективный 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
24.04.2021, 18:00
    #40065467
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С какой версии появились селективные XML-индексы?
felix_ff,

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

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

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

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


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