1
3
LINQ to SQL不向服务器发送联接提示。因此,使用LINQ to SQL的联接的性能将与“直接”发送到服务器(即使用纯ADO或SQL Server Management Studio)的相同联接的性能相同,而不指定任何提示。
Linq to SQL也没有
允许
您可以使用连接提示(据我所知)。因此,如果要强制特定类型的联接,则必须使用存储过程或
其他Linq查询提供程序(如Entity Framework和NHibernate Linq)将执行与Linq to SQL完全相同的操作。这些都不知道您是如何索引数据库的,因此它们都不发送连接提示。
Linq to对象有点不同-它(几乎是?)总是用SQL Server的说法执行“hash join”。这是因为它缺少进行合并联接所必需的索引,而哈希联接是
通常
比嵌套循环更有效,除非元素数量非常少。但要确定
|
2
6
方法论
许多方法都很懒惰,这使得您不能通过
对于System.Linq.Enumerable.Join, the docs 声明这是哈希联接。
例如:
|
3
1
LINQ本身并不选择任何类型的算法,因为严格来说,LINQ只是一种用类似SQL的语法来表达查询的方法,可以映射到
在情况下
在Linq to对象的情况下(使用
|
Community wiki · SQL语法新手 1 年前 |
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |