C# Linq in Oracle ужасная производительность с EF6 - PullRequest
0 голосов
/ 22 апреля 2020

выполнение этого кода:

using (var db = CreateContext())
{
   var q = db.Users.Where(u => u.Email == mail);
   Console.WriteLine(""+q);
}

приносит мне следующее sql:

SELECT 
"Extent1"."ID" AS "ID", 
"Extent1"."GENDER" AS "GENDER", 
"Extent1"."TELEPHONE" AS "TELEPHONE"
FROM "SCHEMA"."USERS" "Extent1"
WHERE (("Extent1"."EMAIL" = :p__linq__0) OR (("Extent1"."EMAIL" IS NULL) AND (:p__linq__0 IS NULL)))

, этот запрос выполнялся в течение 20 минут и, однако, не завершился, если я выполню этот запрос в sqlplus

SELECT 
"Extent1"."ID" AS "ID", 
"Extent1"."GENDER" AS "GENDER", 
"Extent1"."TELEPHONE" AS "TELEPHONE"
FROM "SCHEMA"."USERS" "Extent1"
WHERE (("Extent1"."EMAIL" = 'joe@somewhere.com') OR (("Extent1"."EMAIL" IS NULL) AND ('joe@somewhere.com' IS NULL)))

выполняется менее чем за секунду, я видел, что это происходит на различных запросах - которые я переключил на ручной SQL - но это не интересно.

кто-нибудь сталкивался с этим / нашел решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...