【问题标题】:LINQs Joins vs Stored Procedures JoinsLINQ 连接与存储过程连接
【发布时间】:2016-12-19 18:34:21
【问题描述】:

我在使用LINQs 执行Joins 时阅读了此article。我想知道除了编写一个可以加入表的存储过程之外,这还有多少好处?使用 LINQ 连接会导致任何类型的性能问题吗?

更新:

所以以这个为例:

var employeeInfo =
                from employee in employees
                join addInfo in additionalInfo on employee.ID equals addInfo.CategoryID into allInfo
                select new { CategoryName = category.Name, Products = allInfo};

stored procedure 相比,这个简单的join 对我有用吗?我知道根据表格的大小和您可能想要join 的表格数量可能会对何时使用LINQstore procedure 产生很大的影响。对于LINQ 连接应该使用的表数量和大小以及在执行LINQ 连接时对性能的影响太大时,一个好的“经验法则”是什么?

【问题讨论】:

  • 这个问题是打开方式。这取决于具体的实例以及您如何编写存储过程以及如何编写 linq。如果您想要一个真正的答案,请给出一个数据模型的具体示例,即 sql 和 linq。

标签: c# entity-framework linq stored-procedures performance-testing


【解决方案1】:

查询连接的性能通常取决于连接字段上是否存在正确的索引。如果您的查询正在生成全表扫描,则字段没有属性索引,您的性能将受到直接影响。如果您担心存储过程的性能,请执行解释计划。

至于 LINQ 和 join,你不想这样做。

下面是一篇关于 LINQ 连接的好文章,来自文章:

LINQ to SQL 和 LINQ to Entities 的最大优势之一是导航属性,它允许跨多个表进行查询,而无需使用显式连接。不幸的是,LINQ 查询通常被编写为 SQL 查询的直接翻译,没有利用 LINQ to SQL 和 LINQ to Entities 提供的更丰富的功能。

https://coding.abel.nu/2012/06/dont-use-linqs-join-navigate/

【讨论】:

    猜你喜欢
    • 2019-01-29
    • 2023-03-09
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多