【问题标题】:Will indexing a SQL table improve the performance of a LINQ statement?为 SQL 表编制索引会提高 LINQ 语句的性能吗?
【发布时间】:2011-03-25 17:03:40
【问题描述】:

为这个很可能是个愚蠢的问题道歉。

我只是对 (a) 索引会提高性能 (b) 如何提高性能以及 (c) 为什么会提高性能感到好奇?

此外,如果这确实提高了性能,那么对于 LINQ to SQL、LINQ to Entities、LINQ to Objects 等,是否会出现这种情况。

再次,如果这是一个非常愚蠢的问题,我深表歉意。

【问题讨论】:

    标签: c# sql linq linq-to-sql indexing


    【解决方案1】:

    当且仅当您的 LINQ 查询导致执行可以使用索引的 SQL 语句时,它将提高性能 - 因为,当使用 Linq-To-Sql 时,您的 LINQ 查询被转换为 SQL声明(因此得名)。

    例如,以下查询显然会受益于 Customers 表的 LastName 列上的索引。

    var results = from c in db.Customers
        where c.LastName == 'Smith'
        select c;
    

    【讨论】:

    • 如果您的后备存储是数据库,那么可以 - 索引可以提高性能。
    【解决方案2】:

    如果索引正确,它可以提高性能。 LINQ 只是在后台生成一条 SQL 语句...如果该语句使用您的索引,那么它将提高性能...如果不使用,则不会。

    【讨论】:

      【解决方案3】:

      为了提高性能,应该巧妙地使用索引。例如。您应该索引您查询或加入的键列。

      http://www.sql-server-performance.com/tips/optimizing_indexes_general_p1.aspx

      索引通常会提高select 请求的性能,但会略微增加insertupdate 倍,因为必须重新计算索引。

      【讨论】:

        【解决方案4】:

        就像所有 SQL 一样——这取决于。

        如果你有一张小桌子,这并不重要(今天“小”的值是

        如果您的查询要返回表中超过 30% 的行,那么没有索引可能会更快。

        但是,如果您想从一个大表中选择一两个特定的行,那么索引您在 where 语句中使用的某些列(您传递给 LINQ 的搜索参数)将大大加快速度。

        此外,如果您经常连接表而不是连接谓词(用于连接到表的“ON”语句中的列)应该被索引。这可以将某些查询的响应时间从几小时缩短到几秒。

        【讨论】:

          【解决方案5】:

          LINQ to SQL 生成一条 SQL 语句,您可以在不同的实用程序中看到这条语句,例如 Linq pad。当您在 SQL Server 中运行查询时,索引肯定会提高性能。

          • 索引会提高性能 - 是的。
          • 它将如何提高性能 - 阅读索引。
          • 为什么它会提高性能?- I 真的没有这个答案 问题。

          此外,如果这确实有所改善 性能,会是这样吗 全面适用于 LINQ to SQL、LINQ 到实体、LINQ 到对象等, 等等

          这个问题的答案是SQL表与Object的关系是什么?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-11-25
            • 1970-01-01
            • 1970-01-01
            • 2013-04-23
            • 1970-01-01
            相关资源
            最近更新 更多