相关疑难解决方法(0)

LINQ查询子句的顺序是否会影响实体框架的性能?

我正在使用Entity Framework(代码优先),并且在我的LINQ查询中查找指定子句的顺序会对性能产生巨大影响,例如:

using (var db = new MyDbContext())
{
    var mySize = "medium";
    var myColour = "vermilion";
    var list1 = db.Widgets.Where(x => x.Colour == myColour && x.Size == mySize).ToList();
    var list2 = db.Widgets.Where(x => x.Size == mySize && x.Colour == myColour).ToList();
}
Run Code Online (Sandbox Code Playgroud)

如果(罕见)颜色子句在(通用)大小子句之前,它的速度很快,但反过来它的速度要慢一些.该表有几百万行,所讨论的两个字段是nvarchar(50),因此没有标准化,但它们都是索引的.这些字段以代码第一种方式指定,如下所示:

    [StringLength(50)]
    public string Colour { get; set; }

    [StringLength(50)]
    public string Size { get; set; }
Run Code Online (Sandbox Code Playgroud)

我真的应该在我的LINQ查询中担心这些事情,我认为那是数据库的工作吗?

系统规格如下:

  • Visual Studio 2010
  • .NET 4
  • EntityFramework 6.0.0-beta1
  • SQL Server 2008 R2 Web(64位)

更新:

对,任何惩罚的贪婪,效果可以如下复制.这个问题似乎对许多因素非常敏感,所以请关注其中某些因素的人为性质:

通过nuget安装EntityFramework 6.0.0-beta1,然后生成代码第一个样式:

public class Widget …
Run Code Online (Sandbox Code Playgroud)

.net c# linq sql-server entity-framework

23
推荐指数
2
解决办法
3421
查看次数

标签 统计

.net ×1

c# ×1

entity-framework ×1

linq ×1

sql-server ×1