首页 新闻 赞助 找找看

求解linq to sql 和存储过程的效率差距

0
[已解决问题] 解决于 2014-03-21 16:49

  在执行效率上,linq to sql和存储过程差距有多大?在哪些情况下,linq to sql效率会降低?

 

  实践出真理,勿人云亦云。

水石相生的主页 水石相生 | 初学一级 | 园豆:142
提问于:2014-03-18 17:19
< >
分享
最佳答案
0

实际上ORM的性能影响只是在SQL语句生成上,之所以很多人(包括我)觉得ORM框架性能差,是因为没能力去控制ORM生成SQL语句.

奖励园豆:5
吴瑞祥 | 高人七级 |园豆:29449 | 2014-03-18 17:26

恩,应该是的。那执行效率上linq to sql对效率影响有多大,和存储过程相比相差的多少?毫秒级?秒级?

水石相生 | 园豆:142 (初学一级) | 2014-03-18 17:29

@水石相生: 

linq tosql生成的SQL语句跟存储过程唯一区别在于,存储过程少了语法书解析这个过程

而且我记得只要第二次执行同一个语句时也一样会被缓存.也就是说在SQL执行上是不能有区别的,因为到了sql执行就都到数据库跟你手写sql还是生成sql都没有关系.主要还是生成sql的这个过程会消耗一些性能,但是这种消耗基本上对项目不会产生影响的

吴瑞祥 | 园豆:29449 (高人七级) | 2014-03-18 17:48

@吴瑞祥: 计划项目是用linq,谢谢你的回答。

水石相生 | 园豆:142 (初学一级) | 2014-03-21 16:43
其他回答(3)
0

这种相差不超过1毫秒

dudu | 园豆:31075 (高人七级) | 2014-03-18 17:42

计划项目是用linq,谢谢你的回答。

支持(0) 反对(0) 水石相生 | 园豆:142 (初学一级) | 2014-03-21 16:43
0

性能差异的测试通常是这样的,

同样一件事,执行10000次或是更多,然后得出结论

A:执行1万次,需要2秒。

B:执行1万次,需要10秒。

从这儿看,两者的性能差是很大的,5倍啊。

可是大部份的开发场境是只需要执行一次的,也就是说

使用A技术,需要0.0002秒,使用B技术,需要0.001秒。

可是边际成本是0.3秒

两种技术下:

A:用户的成本是0.3+0.0002秒

B:用户的成本是0.3+0.001秒

你说需要计较吗?

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-03-18 17:49

计划项目中用linq,谢谢你的回答。

支持(0) 反对(0) 水石相生 | 园豆:142 (初学一级) | 2014-03-21 16:44
0

一般而言,你可以认为linq to sql的效率是原生sql的效率的90%-95%,如何取舍就看你自己了。另外在linq to sql里面也仍然可以调用存储过程的(存储过程会映射成一个方法),这个并不矛盾。复杂的,需要效率优化的你仍然可以用存储过程,然后一般的增删改查和业务逻辑可以直接用linq to sql。不存在非黑即白的情况。换句话说,不存在用了linq to sql就不能用存储过程或者原生sql语句的情况。

ocean | 园豆:824 (小虾三级) | 2014-03-20 10:37

计划项目是用linq,谢谢你的回答。

支持(0) 反对(0) 水石相生 | 园豆:142 (初学一级) | 2014-03-21 16:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册