Я использую .NET framework 4.5.1 Linq to SQL.Один запрос медленнее, чем 3 запроса
У меня есть этот класс продукта, используя код первым:
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, IsUnique = false, Order = 2)]
public string Manufacturer_Number { get; set; }
}
У меня есть около 2500000 этих объектов в базе данных.
Первый подход
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 раз быстрее, чем во втором подходе. Может кто-нибудь объяснить это?
Вы должны посмотреть на SQL, который был создан вашим linq, а затем проверить план выполнения в вашем ManagmentStudio. Может быть, у вас есть индексы на каждом поле, и простые запросы могут использовать их, но не ваш последний. –
Надеюсь, у него есть индексы, если у вас есть записи на 2,5 миллиона в таблице ... –
Что именно вы хотите достичь ..? –