In case you have your own slow SQL query, you can optimize it automatically here.
For the query above, the following recommendations will be helpful as part of the SQL tuning process.
You'll find 3 sections below:
CREATE INDEX providers_idx_idproviderexter_idprovider ON providers (idProviderExternal,idProvider);
SELECT
t.GroupName AS ProviderName,
t.GroupName AS Groupname,
t.idPriceGroup,
sum(t.fixed_value) AS fixed_value,
avg(isnull(t.percent_value,
0)) AS percent_value,
isnull(sum(amount),
0) AS amount,
sum(CASE
WHEN Include2SpecTotal = 1 THEN isnull(amount,
0)
ELSE 0 END) AS AmountSpecial,
isnull(sum(bonus_total),
0) AS bonus_total,
isnull(sum(bonus_landlord),
0) AS bonus_landlord,
sum(CASE
WHEN Include2SpecTotal = 1 THEN isnull(bonus_landlord,
0)
ELSE 0 END) AS bonus_landlordSpecial
FROM
(SELECT
ISNULL(dbo.fn_GetProviders_str(p.idLocalize,
'EN'),
'Test Service') AS ProviderName,
idSupplier,
r.idProvider,
alias,
isnull(amount,
0) amount,
isnull(bonus_total,
0) bonus_total,
isnull(bonus_landlord,
0) bonus_landlord,
(SELECT
idPriceGroup
FROM
dbo.fn_GetPricelistGroupForProvider(r.idSupplier,
r.alias)) AS idPriceGroup,
(SELECT
[name]
FROM
dbo.fn_GetPricelistGroupForProvider(r.idSupplier,
r.alias)) AS GroupName,
(SELECT
Include2SpecTotal
FROM
dbo.fn_GetPricelistGroupForProvider(r.idSupplier,
r.alias)) AS Include2SpecTotal,
isnull(fixed_value,
0) fixed_value,
isnull(percent_value,
0) percent_value
FROM
ReportTurnoverItems r
LEFT JOIN
providers p
ON r.idSupplier = p.idProviderExternal
AND r.idProvider = p.idProvider
WHERE
CHARINDEX(',' + CAST(idReportTurnover AS varchar) + ',', +',' + @idReportTurnover + ',') > 0
) t
GROUP BY
t.GroupName,
t.idPriceGroup,
t.Include2SpecTotal
ORDER BY
avg(isnull(t.percent_value,
0)) DESC,
t.GroupName,
t.idPriceGroup