在 Sql 服务器中指定 Xml 索引存储位置
Specify Xml index storage location in Sql Server
有没有办法在 MS Sql 服务器中指定存储位置?
我有一个相对较小的带有 xml 的表格(最多 2 GB 的数据)以及此 table 上的主要和次要 XML 索引。这些索引比基础 table 花费的时间 space 少。
有什么方法可以物理地将 table 和索引分成两个单独的分区?
我在 MSDN 中没有看到任何这样的选项 (https://docs.microsoft.com/en-us/sql/t-sql/statements/create-xml-index-transact-sql):
CREATE [ PRIMARY ] XML INDEX index_name
ON <object> ( xml_column_name )
[ USING XML INDEX xml_index_name
[ FOR { VALUE | PATH | PROPERTY } ] ]
[ WITH ( <xml_index_option> [ ,...n ] ) ]
[ ; ]
但我希望有一些技巧。
The filegroup or partitioning information of the user table is applied
to the XML index. Users cannot specify these separately on an XML
index.
但是,如果我理解正确,您应该能够使用 create table
的 TEXTIMAGE_ON
子句将 XML 列和基于它的所有索引移动到单独的文件组中=] 语句:
create table dbo.MyTable (
Id int not null,
XMLData xml not null
)
on [PRIMARY]
textimage_on [LARGEDAT];
我在这里看到的唯一缺点是 table 中的所有 LOB 类型的列都将放置在该文件组中,而不仅仅是 XML 个。
编辑:
您可以使用 sp_tableoption 的 large value types out of row
选项强制行外 LOB 数据类型,即使它们的值足够小以适合 table 页面。
有没有办法在 MS Sql 服务器中指定存储位置?
我有一个相对较小的带有 xml 的表格(最多 2 GB 的数据)以及此 table 上的主要和次要 XML 索引。这些索引比基础 table 花费的时间 space 少。 有什么方法可以物理地将 table 和索引分成两个单独的分区?
我在 MSDN 中没有看到任何这样的选项 (https://docs.microsoft.com/en-us/sql/t-sql/statements/create-xml-index-transact-sql):
CREATE [ PRIMARY ] XML INDEX index_name
ON <object> ( xml_column_name )
[ USING XML INDEX xml_index_name
[ FOR { VALUE | PATH | PROPERTY } ] ]
[ WITH ( <xml_index_option> [ ,...n ] ) ]
[ ; ]
但我希望有一些技巧。
The filegroup or partitioning information of the user table is applied to the XML index. Users cannot specify these separately on an XML index.
但是,如果我理解正确,您应该能够使用 create table
的 TEXTIMAGE_ON
子句将 XML 列和基于它的所有索引移动到单独的文件组中=] 语句:
create table dbo.MyTable (
Id int not null,
XMLData xml not null
)
on [PRIMARY]
textimage_on [LARGEDAT];
我在这里看到的唯一缺点是 table 中的所有 LOB 类型的列都将放置在该文件组中,而不仅仅是 XML 个。
编辑:
您可以使用 sp_tableoption 的 large value types out of row
选项强制行外 LOB 数据类型,即使它们的值足够小以适合 table 页面。