当你选择在.NET vs T / SQL中编写存储过程时,会发生某种类型的上下文切换,封送,序列化等。
是否有关于此开销的任何确凿事实,因为它与决定使用.NET vs T / SQL存储过程有关?
您做出决定时使用了哪些因素?
对我来说,由于我的学习曲线,使用C#进行开发比在T / SQL中开发快1000%,但是什么时候这不会抵消性能损失(如果有的话)?
答案 0 :(得分:2)
与开关,封送等相关的开销与此无关,除非......您的数据尚未存在于数据库中。
也就是说,我倾向于使用T-SQL尽可能多地执行存储过程 - 包装在ORM中。
真的,那就是答案。查看实体框架,NHibernate,Linq To SQL等。退出编写存储过程(我现在可以听到下来的投票),并用C#来做。
编辑:添加了更多信息 存储过程难以测试(本质上是数据绑定),它们提供的速度优于动态sql,并且实际上并不是更安全。也就是说,对于像排序和过滤这样的事情,关系数据库比C#更有效。
但是,如果必须使用存储过程(并且有时间),请尽可能使用TSQL。如果你有一个需要执行的大量逻辑,那就是没有设置,那么就打破C#。
有一次我这样做是为我的数据库添加一些额外的日期处理。我所在的公司使用了5-4-4个月的财政日历。在SQL中几乎不可能做到这一点。所以我用C#来代替那个。
答案 1 :(得分:2)
我说这取决于。
使用CLR程序可以找到的一些内容更好
对于其他人而言,无论是在易用性还是原始执行速度方面,您都会发现TSQL程序更好
答案 2 :(得分:1)
这是一个宗教问题,但根据您正在做什么,您的架构以及您正在使用的记录数量,可能存在很大差异。测试确实是了解您的情况的最佳方式。
一般来说,存储的程序会更好地扩展;但在你的情况下可能不是这样,或者这对你来说可能不是一个重要的考虑因素。