2016-07-21 24 views
-1

我有一个SqlDataReader的性能问题。看来瓶颈是读大字符串行(有些值大约是2Kb)。读取5000行需要20分钟,而在SSMS中执行的查询少于20秒,并返回相同的数据。有什么办法可以加快SqlDataReader的速度吗?SqlDataReader性能

UPDATE

它看起来并不像执行计划的问题,因为净探查表明,GetValue方法(和内部TryReadSqlStringValue)消耗了所有的时间。

更新2

是的,它是与不同的执行问题的计划,即使查询是相同的。通话效果已修复sp_updatestats之后。

+0

检查这个帖子 - http://www.somewheresomehow.ru/fast-in-ssms-slow-in-app-part1/ – Devart

+0

本文章主要涉及到执行的计划,但探查表明,大多数的时间通过读取字符串字段消耗 – Random

+1

Profiler的什么?顺便说一下,如果你的查询中有参数 – Devart

回答

2

SSMS也使用SqlDataReader。性能问题可能是由于处理结果中的不同查询执行计划或应用程序代码造成的。从比较计划开始。以下是从缓存中获取计划的示例。

SELECT sql_text.text, query_plan.query_plan 
FROM sys.dm_exec_cached_plans AS cached_plans 
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS sql_text 
CROSS APPLY sys.dm_exec_query_plan(plan_handle) AS query_plan 
WHERE sql_text.text LIKE N'%Your query%';