从SQL Server(或SQL Azure)数据库中检索大量数据的最佳方法

时间:2015-05-05 16:21:56

标签: sql-server database ado.net entity-framework-6 azure-sql-database

我有一张有4000万行的表。我正在寻找通过API将这些数据检索到JSON的最佳技术。

表现至关重要!

我认为,最好的方法是使用ADO.NET和SqlDataReader。但是,我想使用自动化(如EF)。

你能告诉我这是检索大量数据的最佳方法吗? (2,3,...... 4000万行)

2 个答案:

答案 0 :(得分:2)

还试一试linq2db(https://github.com/linq2db/linq2db)。像Dapper一样,linq2db是一个非常轻量级的微型ORM,但也支持linq查询过滤,投影等。

答案 1 :(得分:1)

如果你正试图将数据从SQL Server转移到C#库中,那么你就不会比原始的ADO.NET更快。

为了获得简单的关系 - >对象映射,但是为了避免使用更大,更全功能的ORM(如EF和NH)支付的价格,我发现Dapper工作得非常好(https://github.com/StackExchange/dapper-dot-net) 。在我的使用案例中,它比NH更快,非常易于使用,并且您可以获得您正在寻找的映射。

过去有一些基准测试可以查看各种ORM'获取性能可以让您了解您可能正在查看的内容(例如:http://weblogs.asp.net/fbouma/fetch-performance-of-various-net-orm-data-access-frameworks,这并不奇怪地发现原始ADO.NET最快 - 尽管它来自2013年,这只是古老的互联网时代)。

您可以使用您的数据和环境快速进行类似的比较,以了解可能对您的情况有用的内容。

另外,从另一个角度来看 - 数据经常变化多少?是否每次都需要从SQL服务器出来?您可以将它加载到内存中的缓存中,其中检索比从SQL Server查询它更快。