我需要将行行插入数据库,然后在另一个线程中读取这些行然后(在单独的调用中删除它们)。
通常我会为此突破实体框架。但我需要快速。真的很快
行可以是bigint
,bigint
和varchar(max)
。
实体框架有更快的方式吗?如果是这样,它是什么?
(我反对SQL Server 2008 R2)
答案 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并且不会对你强制执行过多的抽象。 利用您的时间来考虑数据库,索引布局,事务处理和查询优化。您可以在这里找到主要的性能提升。