加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 单个查询慢于3个查询

发布时间:2020-12-15 07:58:42 所属栏目:百科 来源:网络整理
导读:我正在使用.NET framework 4.5.1 Linq to SQL. 我首先使用代码生成此产品类: public class Part{ public int PartID { get; set; } [Required(ErrorMessage = "xxx")] public string Title { get; set; } [MaxLength(50)] [Index(IsClustered = false,IsUni
我正在使用.NET framework 4.5.1 Linq to SQL.

我首先使用代码生成此产品类:

public class Part
{
    public int PartID { get; set; }

    [Required(ErrorMessage = "xxx")]        
    public string Title { get; set; }

    [MaxLength(50)]
    [Index(IsClustered = false,IsUnique = false,Order =1)]
    public string Part_Number { get; set; }

    [MaxLength(50)]
    [Index(IsClustered = false,Order = 2)]
    public string Manufacturer_Number { get; set; }
}

我在数据库中有大约250万个这样的实体.

第一种方法

var query = db.Parts.Where(s => s.Manufacturer_Number == sstring).ToList();                
query.AddRange(db.Parts.Where(s => s.Part_Number == sstring).ToList());
query.AddRange(db.Parts.Where(s => s.Title == sstring).ToList());

第二种方法

var query = db.Parts.Where(s => s.Manufacturer_Number == sstring
|| s.Part_Number == sstring || s.Title == sstring).ToList();

第一种方法比第二种方法快100倍.有谁能解释一下?

解决方法

正如我所说的问题可能在索引中如果你希望你的查询更快与这个确切的查询我建议你创建这个索引:
CREATE NONCLUSTERED INDEX PartIndex 
ON Part (PartID,Manufacturer_Number,Part_Number,Title)

如果您经常更改表数据,请不要忘记更新统计信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读