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:
ALTER TABLE `ITEM1` ADD INDEX `item1_idx_item_id_month_ending` (`item_id`,`month_ending`);
ALTER TABLE `ITEM2` ADD INDEX `item2_idx_item_id_month_ending` (`item_id`,`month_ending`);
SELECT
DateElement,
a_sourcestore,
Cost
FROM
((SELECT
GETDATE() AS DateElement,
A.SourceStore AS a_sourcestore,
COALESCE(FR.original_cost,
CO.original_cost) AS Cost
FROM
#TEMPA A
INNER JOIN
REMOTEDB.ITEM1 CO
ON CO.item_id = A.ItemNumber
AND CO.month_ending >= (
SELECT
MAX(CO2.month_ending)
FROM
REMOTEDB.ITEM1 CO2
WHERE
CO2.item_id = A.ItemNumber
)
INNER JOIN
REMOTEDB.ITEM2 FR
ON FR.item_id = A.ItemNumber
AND FR.month_ending >= (
SELECT
MAX(FR2.month_ending)
FROM
REMOTEDB.ITEM2 FR2
WHERE
FR2.item_id = A.ItemNumber
)
WHERE
FR.item_id IS NOT NULL
)
UNION
DISTINCT (SELECT
GETDATE() AS DateElement,
A.SourceStore AS a_sourcestore,
COALESCE(FR.original_cost,
CO.original_cost) AS Cost
FROM
#TEMPA A
INNER JOIN
REMOTEDB.ITEM1 CO
ON CO.item_id = A.ItemNumber
AND CO.month_ending >= (SELECT
MAX(CO2.month_ending)
FROM
REMOTEDB.ITEM1 CO2
WHERE
CO2.item_id = A.ItemNumber)
LEFT JOIN
REMOTEDB.ITEM2 FR
ON FR.item_id = A.ItemNumber
AND FR.month_ending >= (SELECT
MAX(FR2.month_ending)
FROM
REMOTEDB.ITEM2 FR2
WHERE
FR2.item_id = A.ItemNumber)
WHERE
CO.item_id IS NOT NULL)
) AS union1