У меня есть база данных около миллиона записей. Я делаю запрос с использованием структуры сущностей, и ведение журнала сообщает мне, что фактическое время выполнения составляет 60 мс. Я не понимаю, почему, но полное время выполнения составляет 3 секунды ... (BeforeToList + AfterToList). Только 10 строк извлекаются ...Entity Framework медленно загружается
3 секунды очень медленно ...
Вот код:
public IEnumerable<Event> GetEvents(IEnumerable<int> idList)
{
using (var db = new context())
{
db.Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
var watch = Stopwatch.StartNew();
var query = db.Event.Where(o => idList.Contains(o.EventId));
var elapsedMs1 = watch.ElapsedMilliseconds;
watch.Stop();
watch.Reset();
watch.Start();
var query2 = query.ToList();
watch.Stop();
var elapsedMs2 = watch.ElapsedMilliseconds;
Console.WriteLine("data.BeforeToList:" + elapsedMs1 + " --- AfterToList:" + elapsedMs2);
return query2;
}
}
А вот выход:
Test Name: IsGetEventsReturn10Result
Test Outcome: Passed
Result StandardOutput:
data.BeforeToList:1148 --- AfterToList:2883
Debug Trace:
Opened connection at 2015-03-13 21:15:40 -04:00
SELECT
[Extent1].[EventId] AS [EventId],
[Extent1].[Name] AS [Name],
[Extent1].[UrlReference] AS [UrlReference],
[Extent1].[Date] AS [Date],
[Extent1].[TimezoneId] AS [TimezoneId],
[Extent1].[Image1Id] AS [Image1Id],
[Extent1].[Image2Id] AS [Image2Id],
[Extent1].[CreatedBy] AS [CreatedBy],
[Extent1].[CreatedOn] AS [CreatedOn],
[Extent1].[UpdatedOn] AS [UpdatedOn],
[Extent1].[Status] AS [Status],
[Extent1].[SourceId] AS [SourceId],
[Extent1].[Source] AS [Source],
[Extent1].[CategoryID] AS [CategoryID],
[Extent1].[Price] AS [Price],
[Extent1].[Description] AS [Description],
[Extent1].[DescriptionUrl] AS [DescriptionUrl]
FROM [dbo].[Event] AS [Extent1]
WHERE [Extent1].[EventId] IN (366623, 366622, 366621, 366620, 366619, 366618, 366617, 366616, 366615, 366614)
-- Executing at 2015-03-13 21:15:41 -04:00
-- Completed in 60 ms with result: SqlDataReader
Closed connection at 2015-03-13 21:15:41 -04:00
Сколько записей вы получили? Каков ваш дизайн базы данных? И.Е. Структура таблицы Я предлагаю запустить SQL в базе данных и посмотреть, сколько времени потребуется, если возможно, попытаться выполнить план выполнения. – User2012384
Из-за ленивой загрузки запрос, вероятно, не выполняется, пока вы не вызовете 'query.ToList()' – JNYRanger
@Mr. 香港人 Только 10 строк выбраны ... @JNYRanger Я понимаю это, но все еще за 1 секунду до того, как 'ToList()' и 2 сек для 'ToList()' не имеет никакого смысла ... – Hemadeus