In SQL Server, query execution plan, two operations (Parallelism and Hash Match) are getting 30 % and 45 % of the total cost.
What does it mean of Parallelism and Hash Match?
For Parallelism, I have checked on this link that Number of Parallelism can effect performance of query, how do I check what is number of degree of parallelism of server?
How to reduce this cost? I have no idea how can I reduce this cost.
My query is returning 42 million rows and joining 5 tables; no where conditions, no group by, order by clauses.
I have non-clustered indexes on join columns.
My query is:
SELECT
[INV].SKU AS [INV_SKU],
[INV].LOCATION_ID AS [INV_LOCATION_ID],
[INV].DATE AS [INV_BALANCE_DATE],
[INV].COST AS INV_COST,
[ITEM].ITEM_ID,
[ITEM].ITEM_NAME,
[SPITEM].ITEMNumber As SP_ITEMID,
[SPITEM].NAME,
[SPITEM_DEPT].[SKEY],
[SPITEM_DEPT].[DEPT_NAME],
[Time].[DATE] AS [CAL_DATE],
[Time].[CAL_NAME] AS [CAL_NAME],
[Time].[YEAR_NAME] AS [YEAR_NAME],
[Time].[YEAR_NUM] AS [YEAR_NUM],
[Time].[YEAR_START_DT] AS [YEAR_START_DT],
ISNUL(convert(INT, convert(varchar, [Time].[WEEK_END_DT], 112)), 0) AS [WEEK_END_DT_SKEY],
CASE
WHEN [ITEM].DEPARTMENT IS NULL
THEN (CASE
WHEN [SPITEM_DEPT].SPITEM_DEPT_NAME = 'UNSPECIFIED'
THEN 0
ELSE [SPITEM_DEPT].SPITEM_DEPT_NAME
END)
ELSE [ITEM].DEPARTMENT
END AS [DEPARTMENTNUM],
CASE
WHEN [ITEM].[DEPARTMENT_DESCRIPTION] IS NULL
THEN [SPITEM_DEPT].[DESCRIPTION]
ELSE [ITEM].[DEPARTMENT_DESCRIPTION]
END AS [ITEM_DEPARTMENT_DESC],
[LOCATION].LOCATION_NAME,
[LOCATION].COUNTRY,
[LOCATION].CURRENCY,
[CURRENCY].BASE_CURRENCY
FROM
[dbo].[Table1] [INV]
LEFT JOIN
dbo.Table2 AS [ITEM] ON ([INV].SKU = [ITEM].SKU )
LEFT JOIN
dbo.Table3 AS [LOCATION] ON ([INV].LOCATION_ID = [LOCATION].LOCATION_ID)
INNER JOIN
dbo.Table4 [Time] ON ([INV].DATE = [Time].DATE)
LEFT JOIN
dbo.Table5 [SPITEM] ON ([INV].SKU = SPITEM.NAME)
LEFT JOIN
[dbo].[Table6] [SPITEM_DEPT] ON ([SPITEM].[WS_KPI_ITEM_MERCHANDISE_DEPARTMENT_SKEY] = [SPITEM_DEPT].[SKEY])
LEFT JOIN
[dbo].[Table7] [CURRENCY] ON ([INV].DATE BETWEEN [CURRENCY].BEGIN_DT AND [CURRENCY].END_DT AND [LOCATION].CURRENCY= [CURRENCY].LOCAL_CURRENCY)
and we have non-clustered index on joining columns too.
Please suggest possible solutions, I can try.
I am newbie to SQL Server query optimization.


COALESCE()orISNULL()instead ofCASE WHEN ??? IS NULL THEN ...;).