加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL与LINQ性能

发布时间:2020-12-12 16:37:23 所属栏目:MsSql教程 来源:网络整理
导读:我们目前有一个依赖独立数据库ORM的自制实体框架. 我必须构建一个在DB中批量加载元数据的软件,这个模块可以有大约150个excel模板(有关单元格位置,单元格类型,格式等信息). 我可以操作 通过SQL批处理(更快,但交互更少) 通过在内存中构建对象,使用LINQ查询处理
我们目前有一个依赖独立数据库ORM的自制实体框架.

我必须构建一个在DB中批量加载元数据的软件,这个模块可以有大约150个excel模板(有关单元格位置,单元格类型,格式等信息).

我可以操作

>通过SQL批处理(更快,但交互更少)
>通过在内存中构建对象,使用LINQ查询处理它们以进行各种完整性检查,然后对DB进行修改

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

详细来说,LINQ查询(假设所有需要的数据已经被ORM加载到内存中),SQL查询的速度是多少?

解决方法

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

第二,您是否需要跨数据的多个列执行交叉检查和/或完整性检查.我已经有一些情况,添加索引和重建表已经花费了从几分钟到几毫秒的时间,这是因为分片不好和缺少算法.

Linq是生成SQL插入和修改逻辑的有效方式.但是你总是会遇到这样的模式:

>从数据库获取数据
>使用Linq修改数据
>将更改提交到数据库.

如果您有任何逻辑可以在插入中使用,您可以使用set逻辑在SQL中进行更新.例如.更新客户设置KeyCustomer = 1其中Sales> 1000000.SQL Server将处理像这样的命令,比您可以用ORM更快速度的1000倍.但是,由于@gbn已经正确地指出,除非您拥有一个充满强大SQL编码器的团队,否则在短期内维护经常会夺取任何收益.

如果您必须插入大量记录,那么您应该通过SSIS来查看批量加载和/或ETL.这些API将使用更智能的算法,并且批量执行任何约束检查,而不是每次插入,这将为您提供卓越的性能提升.但是,管理SSIS包比点击应用中的按钮要好得多.这些都是您构建应用程序时需要考虑的设计决策.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读