在.net中向SQL Server数据库写入、读取和删除(而不是更新)数据的最高效的方法



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

通常情况下,我只会为此分解实体框架。但我需要这个快一点。真的很快。

一行将是bigintbigintvarchar(max)

实体框架有没有更快的方法?如果是,那是什么?

(我反对SQL Server 2008 R2)

Dapper ORM页面上有一些关于这方面的好信息。

请参阅SELECT映射在500次迭代中的性能-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

Raw ADO.NET是最快的,但我会选择Dapper作为微ORM。它的速度非常快,对你的发展有很大帮助。

然而,重要的是要知道,Dapper或类似程序是最快的主要原因,主要是因为您的控件,您可以精心设计性能最好的SQL查询。

我不想太多考虑数据访问技术,除非你需要一些东西,让你接近实际的SQL,并且不会对你强制执行太多抽象花时间思考数据库、索引布局、事务处理和查询优化。这就是您将获得主要性能提升的地方

最新更新