Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为什么在SELECT查询中包含XML列会对查询性能产生如此严重的负面影响?_Sql_Sql Server_Performance_Azure Sql Database_Xml Column - Fatal编程技术网

Sql 为什么在SELECT查询中包含XML列会对查询性能产生如此严重的负面影响?

Sql 为什么在SELECT查询中包含XML列会对查询性能产生如此严重的负面影响?,sql,sql-server,performance,azure-sql-database,xml-column,Sql,Sql Server,Performance,Azure Sql Database,Xml Column,几个星期以来,我一直在努力解决查询性能问题。在这一点上,我已经完全从查询中挤出了连接类型、索引、保持统计信息最新等方面的所有内容。。。等但后来我偶然发现了一些东西 有点背景 该表表示一条记录 Id INT PK Name NVARCHAR(50) Status INT FK Created DATETIME Version NVARCHAR(10) Data XML 在进行了一些性能基准测试之后,我意识到在select中包含最后一列远远超过了索引、连接复杂性和网络方面的考虑因素,大约在10倍

几个星期以来,我一直在努力解决查询性能问题。在这一点上,我已经完全从查询中挤出了连接类型、索引、保持统计信息最新等方面的所有内容。。。等但后来我偶然发现了一些东西

有点背景

该表表示一条
记录

Id INT PK
Name NVARCHAR(50)
Status INT FK 
Created DATETIME
Version NVARCHAR(10)
Data XML
在进行了一些性能基准测试之后,我意识到在select中包含最后一列远远超过了索引、连接复杂性和网络方面的考虑因素,大约在10倍和20倍之间

在连接到SQL Azure的本地开发人员计算机上的SSM之间进行了以下比较

SELECT Id FROM Records -- ~10 secs for 300,000 rows
SELECT Id, Name, Status, Created, Version FROM Records -- ~20 sec for 300,000 rows
SELECT * FROM Records -- ~350 sec for 300,000 rows
明确地说,我并没有对xml列(XMLDML或XPath查询)做任何疯狂的事情。只需简单地将其从选择中包括/排除即可

在这一点上,我想我已经解决了我的问题,创建了一个
RecordLight
实体,NHibernate映射和MVC控制器堆栈,纯粹是为了在我们的应用程序中搜索和列出


但是我想理解为什么包含XML列会对查询性能产生如此负面的影响

这与SQL server使用的文件中XML数据的存储方式有关吗?其他大型数据类型(如BLOB)是否会出现类似的性能问题?如果XML列的实际内容(可能是一个非常大的文件)分布在其他文件中,那么我可以想象SQL将需要时间来“缝合”在一起。

这与SQL server使用的文件中如何存储XML数据有关吗?其他大型数据类型(如BLOB)是否会出现类似的性能问题?如果XML列的实际内容(可能是一个非常大的文件)分布在其他文件中,那么我可以想象SQL将需要时间来“缝合”在一起。

这与SQL server使用的文件中如何存储XML数据有关吗?其他大型数据类型(如BLOB)是否会出现类似的性能问题?如果XML列的实际内容(可能是一个非常大的文件)分布在其他文件中,那么我可以想象SQL将需要时间来“缝合”在一起。

这与SQL server使用的文件中如何存储XML数据有关吗?其他大型数据类型(如BLOB)是否会出现类似的性能问题?如果XML列的实际内容可能是一个非常大的文件,那么它会分散在其他文件上,那么我可以想象,SQL需要一段时间来拼接在一起。

< P>一个要考虑的是XML数据的字节大小。 例如,如果要连接到远程DB服务器,则需要将所有数据下载到客户端(即使客户端是SSMS)

例如,我在包含MB数据的blob列中也看到了同样的情况

如果您执行以下操作:

SELECT Id, LEFT(Data, 10) FROM Records

您是否看到同一时间返回数据?

< P>一个要考虑的是XML数据的字节大小。

例如,如果要连接到远程DB服务器,则需要将所有数据下载到客户端(即使客户端是SSMS)

例如,我在包含MB数据的blob列中也看到了同样的情况

如果您执行以下操作:

SELECT Id, LEFT(Data, 10) FROM Records

您是否看到同一时间返回数据?

< P>一个要考虑的是XML数据的字节大小。

例如,如果要连接到远程DB服务器,则需要将所有数据下载到客户端(即使客户端是SSMS)

例如,我在包含MB数据的blob列中也看到了同样的情况

如果您执行以下操作:

SELECT Id, LEFT(Data, 10) FROM Records

您是否看到同一时间返回数据?

< P>一个要考虑的是XML数据的字节大小。

例如,如果要连接到远程DB服务器,则需要将所有数据下载到客户端(即使客户端是SSMS)

例如,我在包含MB数据的blob列中也看到了同样的情况

如果您执行以下操作:

SELECT Id, LEFT(Data, 10) FROM Records
您是否看到返回数据的时间相同