I have following query, which is working as expected but taking approx 3 seconds to execute. Reason is large number of records. Can somebody please suggest any steps in order to improve performance?
Explanation :
- Check to see value using Comp id and
Default_Comp = 1
- If not found, ignore the
Default_Comp
and check only based on Comp id - Still not found, ignore the join with table 2 and try to get by Comp id.
My code:
DECLARE @Finished_Comp VARCHAR(MAX) = NULL;
SELECT @Finished_Comp = MIN(tbl2.Finished_Comp)
FROM Table1 tbl1
INNER JOIN Table2 tbl2 ON tbl1.Sav_ID = tbl2.Sav_ID
WHERE Comp_ID = @Comp_ID AND tbl1.Default_Comp = 1
IF @Finished_Comp IS NULL
BEGIN
SELECT @Finished_Comp = MIN(tbl2.Finished_Comp)
FROM Table1 tbl1
INNER JOIN Table2 tbl2 ON tbl1.Sav_ID = tbl2.Sav_ID
WHERE Comp_ID = @Comp_ID
END
IF @Finished_Comp IS NULL
BEGIN
SELECT @Finished_Comp = MIN(Finished_Comp)
FROM Table1 tbl1
WHERE Comp_ID = @Comp_ID AND @Finished_Comp != ''
END
I tried to use COALESCE
, but it's returning wrong results for Finished_Comp