Я использую платформу LINQ и MVC6 и размещаюсь в облаке Microsoft Azure. Следующий запрос потребляет много ресурсов ЦП. Вот запрос в формате SQL
(@p__linq__0 nvarchar(4000))SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
COUNT(1) AS [A1]
FROM [dbo].[DevNews] AS [Extent1]
WHERE (1 = [Extent1].[AdminCheck]) AND ([Extent1].[Tags] LIKE @p__linq__0 ESCAPE N'~') AND ([Extent1].[NewsLabels] IS NULL) AND ([Extent1].[Source] IN (N'PTI',N'IANS',N'Reuters'))
) AS [GroupBy1]


просто предложение ... глядя на свой образец, вы можете избежать подзапроса и unuseful () вокруг каждого условия where
SELECT COUNT(1) AS [C1]
FROM [dbo].[DevNews] AS [Extent1]
WHERE 1 = [Extent1].[AdminCheck]
AND [Extent1].[Tags] LIKE @p__linq__0 ESCAPE N'~'
AND [Extent1].[NewsLabels] IS NULL
AND [Extent1].[Source] IN (N'PTI',N'IANS',N'Reuters')
это должно избежать создания временной таблицы, связанной с подзапросом
. . SQL Server не материализует подзапросы (как правило), поэтому переписывание запроса не влияет на производительность.
Вы запрашиваете по существу:
SELECT COUNT(1) AS [C1]
FROM [dbo].[DevNews] AS [Extent1]
WHERE 1 = [Extent1].[AdminCheck] AND
[Extent1].[Tags] LIKE @p__linq__0 ESCAPE N'~' AND
[Extent1].[NewsLabels] IS NULL AND
[Extent1].[Source] IN (N'PTI', N'IANS', N'Reuters')
Удаление подзапроса не должно повлиять на производительность SQL Server. Однако индекс будет. Я бы порекомендовал покрывающий индекс со следующими столбцами: (AdminCheck, NewsLabels, Source, Tags).
Вы должны быть уверены, что Source хранится как NCHAR или NVARChAR. Преобразование типов может замедлить выполнение запроса.
Наконец, подозрительна колонка под названием Tags. Если это список тегов, хранящихся в виде строки, вам следует пересмотреть структуру данных. Это не лучший способ хранить списки в SQL.
Если в плане выполнения запроса предлагаются индексы, создайте их, чтобы помочь sql сканировать большие таблицы быстрее и лучше. Если нет, используйте регулятор ресурсов с помощью SSRS, чтобы ограничить ресурс для вашего входа в систему, затем запустите свой запрос (это снизит производительность выполнения).
Какие-нибудь индексы? Фактический план выполнения?