Проблема с подготовкой запроса .NET LINQ
У нас возникла проблема с запросом linq. В select query несколько таблиц связаны с соединениями. Где фильтры записей были применены к разделу соединения. Этот запрос работал нормально и давал правильный результат в течение последних 8-9 месяцев.
Внезапно потребовалось время около 2 минут, чтобы получить запись с тем же соединением и потребляющим 99% процессора.
Этот запрос используется всегда во время входа пользователя в систему, поэтому он уверен, что он работал нормально в прошлом до момента выпуска.
Может ли кто-нибудь помочь, почему эта проблема возникла внезапно?
var entityList = (from x in db.TableA join y in db.TableB on x.Id equals y.TableC.TableAId into g from d in g.DefaultIfEmpty() where (d.EndDateTime == null && (d == null || d.TableE.PersonID == personId)) && x.EndDateTime == null && d.TableC.EndDateTime == null && x.TableE.PersonID == personId select new { Col1 = d != null ? d.TableC.TableD.Id : 0, Col2 = d != null ? d.TableC.Id : 0, }).AsQueryable();
Что я уже пробовал:
Мы проверили индексы таблиц.
Gerry Schmitz
Ты просто гадаешь. Только путем подсчета и синхронизации вы можете указать на определенный раздел кода. Кто-то загрузил вашу базу данных миллионом дубликатов, насколько нам известно.