Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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
.net 包含大XML数据的表从应用程序查询时速度非常慢_.net_Sql Server_Entity Framework Core - Fatal编程技术网

.net 包含大XML数据的表从应用程序查询时速度非常慢

.net 包含大XML数据的表从应用程序查询时速度非常慢,.net,sql-server,entity-framework-core,.net,Sql Server,Entity Framework Core,我有一个简单的表,其中包含Id(主键、标识和索引)、修订、时间戳和XML数据。目前,我们存储了约700行数据,每行大约有2-15 MB的XML数据 现在在我的应用程序中,我首先查询最新版本。当我拥有最新条目的Id时,我使用Id作为选择器查询数据 当我在SSMS中执行此语句时:从XmlDb中选择数据,其中Id=1733返回数据的时间不到一秒钟。当我在.Net应用程序中执行同样的操作时,大约需要76秒 谁能解释一下这是从哪里来的,我怎样才能加快速度?表中包含的行越多,速度似乎越慢。但为什么SSMS查

我有一个简单的表,其中包含Id(主键、标识和索引)、修订、时间戳和XML数据。目前,我们存储了约700行数据,每行大约有2-15 MB的XML数据

现在在我的应用程序中,我首先查询最新版本。当我拥有最新条目的Id时,我使用Id作为选择器查询数据

当我在SSMS中执行此语句时:
从XmlDb中选择数据,其中Id=1733
返回数据的时间不到一秒钟。当我在.Net应用程序中执行同样的操作时,大约需要76秒

谁能解释一下这是从哪里来的,我怎样才能加快速度?表中包含的行越多,速度似乎越慢。但为什么SSMS查询它的速度要快得多


我尝试了各种方法,使用实体框架核心,然后手动查询。不管它的速度有多慢。

从SSM和应用程序之间的时差来看,我的第一个猜测是.Net代码得到的是整个表,然后过滤掉该行。如果是这样,您需要重写.Net部分。尝试在数据库上运行跟踪以检查实际请求的内容(SQL Server Profiler)我得到一个SQL:BatchCompleted for
SELECT Id,按时间戳DESC从XmlDb顺序进行的修订,然后是一个看似缓慢的RPC:Completed
exec sp_executesql N'从XmlDb中选择数据,其中Id=@Id',N'@Id int',@Id=2305
在分析器中只需要39382ms,但在程序中实际需要约58s。编辑:是的,SSMS确实以常规SQL语句的形式执行它,而出于某种原因,我的SELECT语句是通过
EXEC
执行的。此外:我将它从使用
SqlParameter
改为直接将Id插入语句中。现在它不再动态执行,但仍然需要完全相同的时间~36552ms。这与SSMS中的语句完全相同。SSMS是返回整个XML数据块,还是截断它?SSMS运行在.NET应用程序运行的同一台PC上吗?只是想知道您是否可以直接在SQL server上运行SSMS,而.NET应用程序可以在远程PC上运行。