最有效的方法是将数据写入,读取和删除(不更新)到.net中的SQL Server数据库

时间:2012-03-27 20:20:31

标签: .net sql sql-server performance

我需要将行行插入数据库,然后在另一个线程中读取这些行然后(在单独的调用中删除它们)。

通常我会为此突破实体框架。但我需要快速。真的很快

行可以是bigintbigintvarchar(max)

实体框架有更快的方式吗?如果是这样,它是什么?

(我反对SQL Server 2008 R2)

2 个答案:

答案 0 :(得分:5)

Dapper ORM页面上有一些关于此的信息。

参见超过500次迭代的SELECT映射性能 - POCO序列化及以下部分。它只讨论SELECTs,但你可以在一定程度上推断它。

例如,您可以看到实体框架在查询速度方面几乎是最糟糕的方式。

Method                             Duration    Remarks
Hand coded (using a SqlDataReader) 47ms
Dapper ExecuteMapperQuery<Post>    49ms
ServiceStack.OrmLite (QueryById)   50ms
PetaPoco                           52ms        Can be faster
BLToolkit                          80ms
SubSonic CodingHorror              107ms
NHibernate SQL                     104ms
Linq 2 SQL ExecuteQuery            181ms
Entity framework ExecuteStoreQuery 631ms

答案 1 :(得分:5)

原始ADO.NET是最快的,但我会选择Dapper作为微型ORM。它非常快,并且在开发过程中为您提供了很多帮助。

但是,重要的是要知道Dapper或类似产品最快的主要原因,主要是因为您的控件,您可以仔细制作性能最佳的SQL查询。

除了你需要的东西之外,我不会费心考虑数据访问技术,这会让你接近实际的SQL并且不会对你强制执行过多的抽象。 利用您的时间来考虑数据库,索引布局,事务处理和查询优化。您可以在这里找到主要的性能提升。