在大多数情况下,TBH并不是linq或SQL的问题。性能将与您要插入的数据量,表中当前的数据量以及要维护的索引有关。
其次,是否需要对数据的多个列进行交叉检查和/或完整性检查。我曾经遇到过这样的情况,即由于碎片不正确和缺乏算法,添加索引和重建表的插入时间从几分钟缩短到了几毫秒。
Linq是生成用于插入和修改逻辑的SQL的有效方法。但是,您总是会遇到以下模式:
- 从数据库中获取数据
- 使用Linq修改数据
- 将更改提交到数据库。
如果您有任何可以在插入中利用的逻辑,则可以使用set逻辑在SQL中进行更新。例如,更新客户将KeyCustomer设置为1,其中Sales>1000000。SQLServer处理这样的命令的速度比您使用ORM所能完成的速度快1000倍。但是,正如@gbn已经正确指出的那样,除非您拥有一支由强大的SQL编码人员组成的团队,否则维护通常会在短期内超过任何性能方面的收益。
如果您必须插入大量记录,那么您实际上应该通过SSIS查看批处理加载和/或ETL。这些API将使用更智能的算法,并分批执行任何约束检查,而不是每个插入执行一次,这将为您带来出色的性能提升。但是,与单击应用程序中的按钮相比,管理SSIS包要花很多功夫。这些都是在设计应用程序时需要考虑的设计决策。



