Где () проблемы с производительностью с большим количеством возвращаемых строк - PullRequest
0 голосов
/ 09 июля 2019

У меня есть таблица базы данных 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

Ответы [ 2 ]

2 голосов
/ 09 июля 2019

На стороне SQL вы должны создать некластеризованный индекс для столбца VendorID таблицы Contracts.

1 голос
/ 09 июля 2019

Похоже, проблема на стороне кода (не на стороне SQL).Вы что-то добавили в конструктор класса «Контракты»?

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