当前位置: 首页 > 面试题库 >

SQL vs LINQ性能

公西志文
2023-03-14
问题内容

当前,我们有一个独立的实体框架,该框架依赖于DB独立的ORM。

我必须构建一个软件,以将数据库中的元数据批量加载到大约150个excel模板中(以及有关单元格位置,单元格类型,格式等的信息)。

我可以操作

  • 通过SQL批处理(更快,但交互性更差)

  • 通过在内存中构建对象,使用LINQ查询处理它们以进行各种完整性检查,然后将修改提交给数据库

我知道SQL绝对快,但是我知道… 它快多少?

详细地说,SQL查询比LINQ查询快多少 (假设ORM已将所有需要的数据加载到内存中)


问题答案:

在大多数情况下,TBH并不是linq或SQL的问题。性能将与您要插入的数据量,表中当前的数据量以及要维护的索引有关。

其次,是否需要对数据的多个列进行交叉检查和/或完整性检查。我曾经遇到过这样的情况,即由于碎片不正确和缺乏算法,添加索引和重建表的插入时间从几分钟缩短到了几毫秒。

Linq是生成用于插入和修改逻辑的SQL的有效方法。但是,您总是会遇到以下模式:

  1. 数据库中获取数据
  2. 使用Linq修改数据
  3. 将更改提交到数据库

如果您有任何可以在插入中利用的逻辑,则可以使用set逻辑在SQL中进行更新。例如,更新客户将KeyCustomer设置为1,其中Sales>1000000。SQLServer处理这样的命令的速度比您使用ORM所能完成的速度快1000倍。但是,正如@gbn已经正确指出的那样,除非您拥有一支由强大的SQL编码人员组成的团队,否则维护通常会在短期内超过任何性能方面的收益。

如果您必须插入大量记录,那么您实际上应该通过SSIS查看批处理加载和/或ETL。这些API将使用更智能的算法,并分批执行任何约束检查,而不是每个插入执行一次,这将为您带来出色的性能提升。但是,与单击应用程序中的按钮相比,管理SSIS包要花很多功夫。这些都是在设计应用程序时需要考虑的设计决策。



 类似资料:
  • 概览 首先我们了解一下 YODAOS 的运行时:YODAOS 基于 ShadowNode 它采用事件驱动、非阻塞I/O模型;在设计之初,ShadowNode 的接口与 Node.js 兼容,因此在大部分场景下,开发者可以像 Node.js 一样使用 ShadowNode,了解这些有利于开发者更快速的进行 YODAOS 上的应用开发。 YODAOS 开发应用时,需要关注应用的性能与稳定性,包括但不限

  • 问题内容: 每次执行此查询需要200毫秒以上的时间: 但这每次在第一次查询后每次执行只需要2-3毫秒: 注意在两个查询中相同的ID值。看起来第二个查询使用第一个查询的缓存结果。但是,为什么第一个查询不能使用缓存的结果本身?从第一个查询中删除不会更改任何内容。 当我使用其他ID执行第二个查询时,第一次执行该查询大约需要40毫秒,此后每次需要2-3毫秒。因此,第二个查询不仅运行速度更快,而且还缓存结果

  • 目录 考虑到性能和架构, Redux “可扩展性” 如何? 每个 action 都调用 “所有的 reducer” 会不会很慢? 在 reducer 中必须对 state 进行深拷贝吗?拷贝 state 不会很慢吗? 怎样减少 store 更新事件的数量? 仅有 “一个 state 树” 会引发内存问题吗?分发多个 action 会占用内存空间吗? 缓存远端数据会造成内存问题吗? 性能 考虑到性能

  • Sketch 的性能可以轻松的支持相当复杂的设计,但如果你创作出了一个很大的文件,你可能会想知道有哪些因素影响着 sketch 的性能。 模糊 模糊是非常消耗系统资源的效果。Sketch 需要先将图层渲染成一个位图(这已经很消耗资源了),然后再在上面添加一个模糊(这将更消耗资源),模糊半径越大,消耗的资源也就越大。 一个半径为 1px的模糊,Sketch 需要检查每一个像素周围的每一个像素,也就是

  • 用户希望他们使用的图形界面具有交互性和流畅性,而这正是你需要越来越多地集中时间和精力的地方。 界面不仅要加载快,还要运行良好, 滚动应该很快,动画和交互应该如丝般流畅。 要编写高性能应用程序,你需要了解 LCUI 如何渲染界面,并确保你编写的代码以及第三方代码尽可能高效地运行。 像素管道 “渲染”就是将组件数据转变为像素数据,这个转变如同一条包含很多区域的单向管道,组件数据经过管道中的每个区域的处

  • 性能工具 Reporting: WEIGHTOF.IT Web Page Test GTmetrix Speed Curve [$] Chrome Devtools Timeline sitespeed.io JS tools: ImageOptim-CLI imagemin Budgeting: performancebudget.io

  • jd.onMemoryWarning(function callback) 监听内存不足告警事件,当 iOS/Android 向小程序进程发出内存警告时,触发该事件。 参数 function callback 内存不足告警事件的回调函数 参数 属性 类型 说明 level number 内存告警等级,只有 Android 才有,对应系统宏定义 level 的合法值 值 说明 5 TRIM_MEMO