【发布时间】: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
为这个很可能是个愚蠢的问题道歉。
我只是对 (a) 索引会提高性能 (b) 如何提高性能以及 (c) 为什么会提高性能感到好奇?
此外,如果这确实提高了性能,那么对于 LINQ to SQL、LINQ to Entities、LINQ to Objects 等,是否会出现这种情况。
再次,如果这是一个非常愚蠢的问题,我深表歉意。
【问题讨论】:
标签: c# sql linq linq-to-sql indexing
当且仅当您的 LINQ 查询导致执行可以使用索引的 SQL 语句时,它将提高性能 - 因为,当使用 Linq-To-Sql 时,您的 LINQ 查询被转换为 SQL声明(因此得名)。
例如,以下查询显然会受益于 Customers 表的 LastName 列上的索引。
var results = from c in db.Customers
where c.LastName == 'Smith'
select c;
【讨论】:
如果索引正确,它可以提高性能。 LINQ 只是在后台生成一条 SQL 语句...如果该语句使用您的索引,那么它将提高性能...如果不使用,则不会。
【讨论】:
为了提高性能,应该巧妙地使用索引。例如。您应该索引您查询或加入的键列。
http://www.sql-server-performance.com/tips/optimizing_indexes_general_p1.aspx
索引通常会提高select 请求的性能,但会略微增加insert 和update 倍,因为必须重新计算索引。
【讨论】:
就像所有 SQL 一样——这取决于。
如果你有一张小桌子,这并不重要(今天“小”的值是
如果您的查询要返回表中超过 30% 的行,那么没有索引可能会更快。
但是,如果您想从一个大表中选择一两个特定的行,那么索引您在 where 语句中使用的某些列(您传递给 LINQ 的搜索参数)将大大加快速度。
此外,如果您经常连接表而不是连接谓词(用于连接到表的“ON”语句中的列)应该被索引。这可以将某些查询的响应时间从几小时缩短到几秒。
【讨论】:
LINQ to SQL 生成一条 SQL 语句,您可以在不同的实用程序中看到这条语句,例如 Linq pad。当您在 SQL Server 中运行查询时,索引肯定会提高性能。
此外,如果这确实有所改善 性能,会是这样吗 全面适用于 LINQ to SQL、LINQ 到实体、LINQ 到对象等, 等等
这个问题的答案是SQL表与Object的关系是什么?
【讨论】: