在XML数据方面,我是新手。
我目前有一个数据库,其中xml数据存储在ntext
列中,此数据库似乎占用了太多空间。我正在尝试改进数据的存储方式,以减少数据库的整体大小。
我看到它的方式,我有两个选择:
nvarchar(max)
xml
我需要通过将一些数据导入这些列来测试上述两个选项。
我遇到的问题是,ntext列中的XML数据当前存储为utf-8。为了让我将它导入XML数据类型列,我需要将数据CAST / CONVERT转换为UTF-16?
这是对的吗?
答案 0 :(得分:4)
将数据存储为数据类型XML
具有两个主要好处:
XML
,所以它以优化的(标记化)方式存储,占用的空间少于等效nvarchar(max)
列消耗的空间。 转换现有的NTEXT
列:只需在其上执行CAST
。
你得到什么结果:
SELECT
id, ntextColumn, CAST(ntextColumn AS XML)
FROM
dbo.YourTable
我几乎可以肯定这会奏效 - 就像那样。 SQL Server不支持UTF-8 - 所以即使在ntext
列中的数据很可能真正存储为UTF-8(它已经被转换为SQL Server的Unicode - UCS) -2 / UTF-16)所以我没有看到将此转换为数据类型XML
的任何问题,实际上。