我有一个MS SQL查询,在ASP.NET(EF Linq)中运行大约需要40秒。 我在Profiler中捕获了它,它显示持续时间约为40秒:
但是,当我在 SQL Management Studio 中复制/粘贴它时,它会在00:00:00秒运行。它在单个表上是一个简单的select
(没有连接,视图,存储过程),它返回大约10.000行。
执行计划:
我读到this question on StackOverflow女巫指向this blog并放置
设置ARITHABORT OFF
在Management Studio中的查询之上,但这并不会让它变慢,所以我不认为这是问题所在。
奇怪的是,我们使用Windows 2012 / SQL 2014 Web Edition将应用程序迁移到速度更快的服务器,从那时起查询似乎运行得更慢。在使用SQL Express 2008R2的旧Windows 2008R2服务器上,相同的查询运行速度要快得多。
答案 0 :(得分:0)
看起来返回的列中的数据量是问题所在。我将它缩小到所需的最小列数,并且变得更快。我希望文本列在应用程序中特别慢,但它似乎不会影响Management Studio中的相同查询。
PS。在注意到性能提升后,我在原始SQL中重写了整个内容,并且查询持续时间降至接近0秒。
答案 1 :(得分:0)
我认为某些行已被另一个操作锁定,这会影响您尝试获取的数据,但尚未提交。尝试此操作以选择语句
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SELECT * FROM tblA WHERE something