2017-01-30 18 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句で使用される唯一のフィールドであるため、この問題が解決されると思われます。

関連する問題