我有SqlDataReader的性能问题。瓶颈似乎正在读取较大的字符串行(某些值约为2Kb)。读取5000行需要20分钟,而同一查询将在不到20秒的时间内在SSMS中执行,并返回相同的数据。有什么方法可以加快SqlDataReader的速度吗?
更新
它看起来不像是执行计划问题,因为.Net探查器显示该GetValue
方法(并且在内部TryReadSqlStringValue
)一直在消耗时间。
更新2
是的,即使查询相同,执行计划也不同,这是一个问题。后sp_updatestats
呼叫性能是固定的。
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%';
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句