У меня есть таблица базы данных SQL Server, в которой содержится около 3 миллионов записей.У меня есть сайт MVC со страницей для отображения данных из этой таблицы, и я сталкиваюсь с серьезными проблемами с производительностью.
Выполнение такого простого запроса, как этот, занимает около 25-30 секунд, чтобы вернуть около двух тысяч строк:
_dbContext.Contracts
.Where(c => c.VendorID == vendorId)
.ToList();
Я подумал, что, возможно, создаваемый sql делал что-то странное, но все довольно просто:
SELECT
[Extent1].[ContractID] AS [ContractID],
[Extent1].[VendorID] AS [VendorID],
[Extent1].[Amount] AS [Amount],
FROM [dbo].[Contracts] AS [Extent1]
WHERE [Extent1].[VendorID] = @p__linq__0
Но разница в том, что когда я запускаю этот запрос непосредственно в базе данных,это займет всего 3-5 секунд.Поэтому я чувствую, что EF может делать что-то странное.
Можно ли как-нибудь улучшить производительность этого?Или на стороне SQL, или в моем решении с EF?
Сайт немного стар, это MVC 3 с EF 4