linq对sql与存储过程的效率

时间:2011-03-24 01:41:51

标签: c# asp.net linq-to-sql

您好我正在编写一个包含搜索页面并在数据库中搜索的应用程序。

我想知道我是否应该在linq或存储过程中执行此操作。

存储过程的性能是否比linq到sql的性能要好得多?

我认为这是因为为了编写linq查询,您需要使用datacontext来访问要查询的表。我想象这本身意味着如果桌子很大,它可能会变得低效。

如果你使用的话就是这样:

context.GetTable<T>();

任何人都可以在这里告诉我吗?

4 个答案:

答案 0 :(得分:5)

除非您遇到Linq to SQL生成的TSQL不是最佳的情况,否则不太可能有太大差异。

如果想要对TSQL进行绝对控制,请使用存储过程。

如果速度至关重要,请对两者进行基准测试,并检查由Linq to SQL解决方案生成的TSQL。

此外,您应该警惕在任一解决方案中将整个表(除非它们很小,例如频繁访问的查找数据)拉回到整个表中。

答案 1 :(得分:2)

如果速度对您来说至关重要,那么您应该继续在一组合理数据上对两个选项进行基准测试。从技术上讲,我希望SP更快,但可能没那么大差异。

答案 2 :(得分:1)

“高效”对你意味着什么?

我正在开发一个以秒秒(最好是500毫秒)为目标的网站。我们使用Linq搜索我们的大部分内容。我们实际使用SP的唯一一次是当我们使用在EF中不存在的hierarchyid和其他SqlServer数据类型时。

答案 3 :(得分:0)

GetTable可能不会在两者之间有所不同,因为从根本上说它只是SELECT * FROM T.在Linq没有非常优化地编写查询的情况下,您将看到存储过程的更多重要收益,或者在一些非常高的负载情况下缓存执行计划会产生影响。

对它进行基准测试是最好的答案,但从你看起来的样子来看,我认为这种差异不会太大。