У меня есть служба WCF, которая работает на экземпляре классической службы в Azure. Служба использует базу данных SQL Azure.
Запросы обрабатываются слишком долго.
Это скриншот сквозной транзакции. Я выделил два медленных вызова базы данных.
Когда я смотрю на 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]
Существующие индексы
В таблице есть три существующих индекса:
IX_Organisation_CloudApiKey:
СОЗДАТЬ НЕКЛАСТЕРНЫЙ ИНДЕКС [IX_Organisation_CloudApiKey] ВКЛ [dbo]. [CloudObject]
(
[Organisation_CloudApiKey] ASC
) С (STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [ОСНОВНОЙ]
GO
Ключ, автоматически сгенерированный Azure:
СОЗДАТЬ НЕКЛАСТЕРНЫЙ ИНДЕКС [nci_wi_CloudObject_7AD41B9985003F79D674] ON [dbo]. [CloudObject]
(
[Organisation_CloudApiKey] ASC
)
ВКЛЮЧИТЬ ([Obfuscationsnummer]) С (STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [ПЕРВИЧНЫЙ]
GO
Первичный ключ
Вопрос
Что я могу сделать, чтобы этот запрос работал лучше?