我们目前有一个自制的实体框架,依赖于独立于数据库的ORM。
我必须构建一个软件,可以在数据库中批量加载大约 150 个 Excel 模板的元数据(包含单元格位置、单元格类型、格式等信息)。
我可以操作
我知道 SQL 绝对更快,但我知道......快了多少?
详细来说,SQL 查询比 LINQ 查询快多少(假设所有需要的数据已经通过ORM加载到内存中) ?
老实说,在大多数情况下,linq 或 SQL 并不是问题所在。您的性能将与您插入的数据量、表中当前的数据量以及您正在维护的索引有关。
其次,您是否需要对数据的多个列进行交叉检查和/或完整性检查。我曾经遇到过添加索引和重建表将插入时间从几分钟缩短到几毫秒的情况,这只是由于碎片不良和缺乏算法。
Linq 是生成用于插入和修改逻辑的 SQL 的有效方法。然而你最终总会得到这样的模式:
- 从数据库中获取数据
- 使用 Linq 修改数据
- 将更改提交到数据库。
如果您有可以在插入中利用的任何逻辑,则可以使用集合逻辑在 SQL 中进行更新。例如。更新客户 设置 KeyCustomer = 1,其中 Sales > 1000000。SQL Server 处理这样的命令的速度比您使用 ORM 执行的速度快 1000 倍。然而,正如 @gbn 已经正确指出的那样,除非您拥有一支由强大的 SQL 编码人员组成的团队,否则维护通常会在短期内胜过任何性能提升。
如果您必须插入大量记录,那么您确实应该考虑通过 SSIS 进行批量加载和/或 ETL。这些 API 将使用更智能的算法,并批量执行任何约束检查,而不是每次插入,这将为您带来出色的性能提升。但管理 SSIS 包比单击应用程序中的按钮要复杂得多。这些都是您在构建应用程序时需要考虑的设计决策。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)