1 performance xml sql-server sql-server-2008-r2
我有一个 21 列的表。大多数是数字,其余的是nvarchar
。
我需要添加 4 列,这些列将包含每行的 XML 数据。每行的 XML 数据可以是 200 到 2,000 行。
问题是:
将 XML 类型的列添加到同一个表是否会改变查询该表的速度?
当我将 xml 类型的列添加到另一个表并在执行查询时连接两个表时,有什么性能优势?
对 XML 数据进行编码以缩小它并在应用程序中对其进行解码是否更好?
Cad*_*oux 11
这有很多方面,所以这真的取决于。
将 XML 类型的列添加到同一个表是否会改变查询该表的速度?
可能会读取更多数据(I/O),但是当您说查询速度时,如果您的意思是根据 XML 之外的列查找行,这通常应该基于索引,因此不应特别涉及 xml在任何性能差异
xml 列可以存储在行中或行外,这对可以存储在页面中的行数、碎片等有明显的影响... http://technet.microsoft.com/en-us/library/ms189087( v=sql.105).aspx 行外存储应该意味着每页适合更多行,因此当您实际上没有将 xml 数据存储在行中时,读取和丢弃的数据更少。
当我将 xml 类型的列添加到另一个表并在执行查询时连接两个表时,有什么性能优势?
嗯,这基本上等同于行外存储。就能够独立管理另一个表而言,您只能自己获得管理上的好处。
对 XML 数据进行编码以缩小它并在应用程序中对其进行解码是否更好?
也许。如果我们假设您不需要在数据库中查询它(使用 xml 查询技术的 xml 数据类型),那么为什么将它存储为 xml 而不是 varbinary 或 varchar 呢?