Как оптимизировать SQL-запрос в Azure SQL db - PullRequest
0 голосов
/ 29 августа 2018

У меня есть служба WCF, которая работает на экземпляре классической службы в Azure. Служба использует базу данных SQL Azure.

Запросы обрабатываются слишком долго.

Это скриншот сквозной транзакции. Я выделил два медленных вызова базы данных.

End to end transaction drill down showing that the request uses 3.2 and 3.6 seconds to execute certain calls to the database dependency

Когда я смотрю на Query Performance Insights на портале Azure, я обнаруживаю, что это самый трудоемкий запрос:

(@p__linq__0 nvarchar(4000),@p__linq__1 uniqueidentifier)SELECT 
    [Limit1].[ObfuscationType] AS [ObfuscationType], 
    [Limit1].[Id] AS [Id], 
    [Limit1].[Obfuscationsnummer] AS [Obfuscationsnummer], 
    [Limit1].[Object] AS [Object], 
    [Limit1].[Status] AS [Status], 
    [Limit1].[Organisation_CloudApiKey] AS [Organisation_CloudApiKey]
    FROM ( SELECT TOP (1) 
        [Extent1].[Id] AS [Id], 
        [Extent1].[Obfuscationsnummer] AS [Obfuscationsnummer], 
        [Extent1].[ObfuscationType] AS [ObfuscationType], 
        [Extent1].[Object] AS [Object], 
        [Extent1].[Status] AS [Status], 
        [Extent1].[Organisation_CloudApiKey] AS [Organisation_CloudApiKey]
        FROM [dbo].[CloudObject] AS [Extent1]
        WHERE (([Extent1].[Obfuscationsnummer] = @p__linq__0)
          OR (([Extent1].[Obfuscationsnummer] IS NULL) 
          AND (@p__linq__0 IS NULL))) 
          AND ([Extent1].[Organisation_CloudApiKey] = @p__linq__1)
    )  AS [Limit1]

Execution plan for above query

Существующие индексы

В таблице есть три существующих индекса:

  1. IX_Organisation_CloudApiKey:

    СОЗДАТЬ НЕКЛАСТЕРНЫЙ ИНДЕКС [IX_Organisation_CloudApiKey] ВКЛ [dbo]. [CloudObject] ( [Organisation_CloudApiKey] ASC ) С (STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [ОСНОВНОЙ] GO

  2. Ключ, автоматически сгенерированный Azure:

    СОЗДАТЬ НЕКЛАСТЕРНЫЙ ИНДЕКС [nci_wi_CloudObject_7AD41B9985003F79D674] ON [dbo]. [CloudObject] ( [Organisation_CloudApiKey] ASC ) ВКЛЮЧИТЬ ([Obfuscationsnummer]) С (STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [ПЕРВИЧНЫЙ] GO

  3. Первичный ключ

Вопрос

Что я могу сделать, чтобы этот запрос работал лучше?

...