代码之家  ›  专栏  ›  技术社区  ›  TheSoftwareJedi jac

在Sql Server上执行.NET存储过程的相关开销是多少?

  •  2
  • TheSoftwareJedi jac  · 技术社区  · 16 年前

    你用什么因素来做决定?

    对我来说,由于我的学习曲线,在C#中开发比在T/SQL中开发快1000%,但这一收益何时不能抵消性能损失(如果有的话)?

    3 回复  |  直到 16 年前
        1
  •  2
  •   Rad    16 年前

    我认为这要视情况而定。

    您会发现使用CLR过程会更好

    1. 使用本机.NET对象--文件系统、网络等
    2. 使用TQL未提供或不如.NET好的功能,例如正则表达式

    1. 使用基于集合的逻辑(其中abc在def中或abc不在ghi中)
        2
  •  2
  •   Chris Brandsma    16 年前

    开销与交换、封送等无关,除非……您的数据不在数据库中。

    编辑:添加更多信息 存储过程很难测试(固有的数据绑定),它们不能提供比动态sql更快的好处,而且实际上也不再安全。也就是说,对于排序和过滤之类的事情,关系数据库比C#更高效。

    但是,如果您必须使用存储过程(有时),请尽可能多地使用TSQL。如果需要执行大量的逻辑,而这些逻辑不是基于集合的,那么请中断C#。

    有一次我这样做是为了给我的数据库添加一些额外的日期处理。我所在的公司使用5-4-4周到4个月的财务日历。这在SQL中几乎是不可能做到的。所以我就用C#来做这个。

        3
  •  1
  •   dkretz    16 年前

    这有点像一个宗教问题,但是根据你在做什么,你的模式,以及你用多少记录,可能会有很大的不同。测试确实是了解您的情况的最佳方式。

    总的来说,存储的数据会更好地扩展;但对你来说,这可能不是事实,或者这对你来说可能不是一个重要的考虑因素。