您好我正在编写一个包含搜索页面并在数据库中搜索的应用程序。
我想知道我是否应该在linq或存储过程中执行此操作。
存储过程的性能是否比linq到sql的性能要好得多?
我认为这是因为为了编写linq查询,您需要使用datacontext来访问要查询的表。我想象这本身意味着如果桌子很大,它可能会变得低效。
如果你使用的话就是这样:
context.GetTable<T>();
任何人都可以在这里告诉我吗?
答案 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没有非常优化地编写查询的情况下,您将看到存储过程的更多重要收益,或者在一些非常高的负载情况下缓存执行计划会产生影响。
对它进行基准测试是最好的答案,但从你看起来的样子来看,我认为这种差异不会太大。