如何在SqlServer Management Studio 2005中显示总运行时间?

时间:2009-01-06 13:43:07

标签: linq stored-procedures

我通常不使用Sql Server Management Studio,我通常使用Linqpad来运行我的所有数据库查询。无论如何....我的老板似乎认为存储过程“比linq快得多”。

因此,为了测试这个,我想运行一个简单的存储过程,并显示运行相等的linq语句所需的时间。

关于如何实现这一目标的任何好主意?我相信你们(和女士们)之前已经碰过这个。

关于如何将它与linq语句的运行时进行比较的任何想法?

编辑:让我澄清一些事情;首先,当我的老板说“linq”时,我只能假设她在谈论Linq-to-Sql。其次,我愿意尽一切可能来测试这个理论。

5 个答案:

答案 0 :(得分:3)

你的老板是正确的,因为存储过程就像编译代码一样,而LINQ(使用SQL)更像是解释代码。

但是......你在存储过程中失去了灵活性。另外,你是否经常运行它们,每分钟超过10,000次?如果没有,那么你就不会注意到它的不同。

很多事情都会影响查询速度,其中最少的是存储过程与自由形式查询。在我担心将所有内容存储起来之前,我会更担心数据库结构和索引之类的东西。

答案 1 :(得分:1)

我通常会为此创建一个变量。例如:

Declare @Start DateTime
Set @Start = GetDate()

Exec YourStoredProcedureHere

Select DateDiff(Millisecond, @Start, GetDate())

答案 2 :(得分:1)

我认为他要求的不是记录时间的方法,而是更像是一些现实的,有效的测试作为存储过程与Linq运行。

答案 3 :(得分:0)

您应该可以使用SQL Profiler来跟踪这两个查询,看看有什么不同之处。使用此方法,您的计时将在同一个地方完成,而不是尝试将TSql时序与C#中的某些内容进行比较,以用于LINQ查询。

答案 4 :(得分:0)

“存储过程比LINQ快得多”的论点有点模糊。我们是在谈论运行单个存储过程,还是使用相同的数据库连接运行多个存储过程?我们在谈论使用游标还是交易?一些细节会非常有用。

我的理解是LINQ to SQL对于处理从数据库服务器返回到应用程序的数据或使用更多SQL式语法向数据库服务器发出命令非常有用。操作的类型和数量可能会对一个与另一个的性能产生重大影响。

我,我自己,我认为(基于我有限的经验)存储过程应该总是更快,因为它们驻留在本地数据本身,并且您消除了应用程序可能需要的任何网络流量的开销对服务器进行重复调用。 (建立连接时总是需要一些。)但这可以通过优化来缓解。

正如我所说,需要澄清。

编辑:在我的帖子中,我指的是端到端性能,而不是LINQ生成的SQL与存储过程中的SQL的性能。