【问题标题】:The best way to retrieve large amounts of data from a SQL Server (or SQL Azure) database从 SQL Server(或 SQL Azure)数据库中检索大量数据的最佳方式
【发布时间】:2015-05-05 16:21:56
【问题描述】:

我有一个包含 4000 万行的表。我正在寻找通过 API 将此数据检索到 JSON 的最佳技术。

性能很关键!

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

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

【问题讨论】:

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


    【解决方案1】:

    如果您尝试将数据从 SQL Server 获取到 C# 库中,您将不会比原始 ADO.NET 更快。

    为了获得简单的关系->对象映射,但又避免了使用更大、功能更全的 ORM(如 EF 和 NH)所付出的代价,我发现 Dapper 运行良好 (https://github.com/StackExchange/dapper-dot-net)。在我的用例中,它比 NH 更快,非常易于使用,并且您可以获得所需的映射。

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

    您可以很快地对您的数据和环境进行类似的比较,以了解什么可能适合您的情况。

    另外,从另一个角度来看 - 数据多久更改一次?每次都需要从SQL Server出来吗?您可以将其加载到内存中的缓存中,这样检索比从 SQL Server 中查询要快。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2012-04-04
        • 2014-11-21
        • 1970-01-01
        • 1970-01-01
        • 2020-05-13
        • 1970-01-01
        • 2011-11-05
        • 1970-01-01
        • 2020-07-25
        相关资源
        最近更新 更多