내가 LINQ 쿼리에서 초보자 해요 내 쿼리가 하나 개의 방법 광석 서로를 향상시킬 수 있는지 궁금 해요 :Linq에 간단한 쿼리 개선
long vehid = json.VehicleId.Value;
DateTime date = DateTime.Parse(json.date.Value);
var Alerts = (from t2 in entities.Alerts.AsNoTracking()
where
t2.GeneratedTimeLocal.Year == date.Year
&& t2.GeneratedTimeLocal.Month == date.Month
&& t2.GeneratedTimeLocal.Day == date.Day
&& (t2.AlertType == 2 || t2.AlertType == 3)
&& t2.vId == vid
select new
{
GeneratedTimeLocal = t2.GeneratedTimeLocal,
OptionalText = t2.OptionalText
});
return Alerts;
문제는 경고 데이터 테이블이의 엄청난 금액을 가지고 있다는 것입니다 날마다 증가하는 데이터가 있으며 지금은 다소 느립니다. 경고 데이터 테이블의 GeneratedTimeLocal
필드는 datetimeoffset 유형입니다 (7). 이 쿼리를 향상시킬 수있는 방법이 있습니까?
당신은 'DataTable'이라고 말하지만 그것이 SQL 데이터베이스라고 가정합니다. SQL에서 동등한 쿼리를 실행하면 매우 빠릅니까? – Equalsk
문제는 LINQ에 없으며 DB에 있습니다. LINQ 쿼리는 SQL로 변환되므로 성능 향상을 위해 해당 인덱스를 개선해야합니다 (예 : 인덱스 사용). – Sefe
한 가지 옵션은 년, 월, 일 대신 날짜 범위를 확인하는 것입니다. 기본적으로 2017-12-13을 원하면 2017-12-13 00 : 00 : 00.000에서 2017-12-13 23 : 59 : 59.999의 범위가 필요합니다. 그런 다음 더 빠른 쿼리와 각 행을 치고 년, 월 및 일을 꺼내야하는 날짜 열에 대해 색인을 생성하십시오. 물론 필터의 다른 열에 대한 색인 생성도 도움이 될 것입니다. 결과 쿼리를 캡처하고 DB에 대한 SQL 분석기를 통해 실행하여 인덱스에 대한 힌트를 얻으십시오. – juharr