微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL与LINQ性能

我们目前有一个依赖独立数据库ORM的自制实体框架.

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

我可以操作

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

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

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

解决方法

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

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

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

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

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

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

原文地址:https://www.jb51.cc/mssql/82018.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐