2017-01-30 1 views
0

ASP.NET Core 1.1을 사용하고 있습니다.매우 오랜 시간이 걸리는 Azure에서의 SQL 실행

C#

List<Message> messages =await _context.Messages.Where(m => m.UserId.Equals(_userManager.GetUserId(User))) 
    .Select(m => new Message { ID = m.ID, DateTime = m.DateTime, Text = m.Text }).ToListAsync(); 

SQL

SELECT [m].[ID], [m].[DateTime], [m].[Text] FROM [Messages] AS [m] WHERE [m].[UserId] = @__GetUserId_0 

실행 계획 통계 :

다음

은 대부분의 시간을 소요하고이 모든 문제의 원인이되는 쿼리입니다 Execution plan statistics

내 웹 사이트가 매우 느림 반응이 없으며 때때로 오류가 나타납니다.

+1

실행 계획에 거의 500,000 행의 인덱스 스캔이 표시됩니다. 인덱스를 치는 대신 전체 스캔을하는 것처럼 보입니다. 그러나 색인을 보지 않으면 알기가 약간 어렵습니다. –

+1

쿼리가 몇 행을 반환합니까? 쿼리가 SSMS로 가져 오는 시간 (모든 행이 표시 될 때까지) –

+0

@DavidMakogon 흥미로운 점은 무엇입니까? 인덱스를 건너 뛰는 원인은 무엇입니까? – Techy

답변

1

주석에 설명 된대로 : 실행 계획에 거의 500,000 행의 인덱스 스캔이 표시됩니다. 인덱스를 치는 대신 전체 스캔을하는 것처럼 보입니다.

UserId에 색인을 추가하면이 필드가 WHERE 절에 사용 된 유일한 필드이기 때문에이 문제가 해결되는 것으로 판단됩니다.

관련 문제