Я испытываю очень низкую производительность, когда я задаю строковую переменную в своем предложении EF Where, и очень высокую производительность, когда я жестко кодирую строковое значение в предложении where.
C #, .Net Framework 4.7. 1, EF 6,2
50 мс
db.Dealers.Where(x => x.SourceDealerId == "000111222fff333q");
1,5 секунды
var parameter = "000111222fff333q";
db.Dealers.Where(x => x.SourceDealerId== parameter );
Дилер типа идентификатора Char (18) в базе данных, и это обнуляется. Подход сначала баз данных. Вот свойства столбца дилера: ![enter image description here](https://i.stack.imgur.com/KAJ42.png)
Существует разница в SQL, который генерируется в обоих случаях. Для быстрого случая: ... WHERE dealerId = '000111222fff333q'
Для быстрого случая:
![enter image description here](https://i.stack.imgur.com/mC5pN.png)