EntityFramework VS SQL存储过程

时间:2016-02-21 18:22:20

标签: c# sql-server performance entity-framework

我有一张超过10,000,000行的表。

我需要一些过滤器(一些in个查询和一些like个查询)和动态排序

我想知道处理大数据,分页,过滤和订购的最佳方式是什么。

当然它很容易使用实体框架,但我认为存储过程的性能更好

enter image description here

1 个答案:

答案 0 :(得分:0)

  

我有一张超过10,000,000行的表。

你有一张小桌子,几乎很小,小到足以让现在任何人滥用服务器都没问题。

严重。

  

我想知道处理大数据的最佳方式是什么,

首先是HAVING大数据。这通常被定义为低成本服务器的多倍RMA。其中今天有大约16个内核和大约128GB内存。之后它变得昂贵。

一般规则是:

  • 请勿登录。在开始时进行分页很容易,但是打印到最终结果很慢 - 要么预先计算页面并存储它们,要么只是为了丢弃结果而重新执行查询。它在第1-2页很好用,然后变慢。
  

当然它很容易与实体框架一起工作,但我认为   存储过程的性能更好

为什么会这样?生成查询的开销很小,与经常重复的妄想相反 - SQL Server对所有内容使用查询计划缓存。 SP更快 - 如果编译开销很大(即SMALL数据),或者您通过网络提取大量数据以便返回结果(仅在数据库中处理)。

对于其他人来说,"将军"绩效影响接近于零。

OTOH它允许您发送更多量身定制的SQL,而无需考虑真正糟糕和丑陋的存储过程 - 在内部发布动态SQL,或者为可选参数提供大量复杂条件。

小心:

  • IN条款对于表现来说可能很糟糕。不要在那里放置数百个元素。如果您需要 - 一个SP和一个准备并加入的表变量是更好的方法。
  • 正如我所说 - 小心分页。有人要求第100页并且只是向前推进就是重复一次处理。

并且:态度调整。大约20年前1000万行的时间。