hi,
SELECT TSK.TaskID AS [SprintID] ,TSK.Title AS [Sprint] ,TSK.[StartDate] ,TSK.[EndDate] ,SRA.[ResourceID] ,R.[ResourceName] ,D.[UID] AS [DivisionID] ,D.[Division] ,T.[UID] AS [TechnologyID] ,T.Technology ,'Free On '+ CONVERT(NVARCHAR,TSK.[EndDate],103) [FreeStatus] ,ISNULL(RSS.[Rating],0) [Rating] FROM tb_Technology T ,Tasks TSK INNER JOIN TasksResource SRA ON TSK.TaskID = SRA.TaskID INNER JOIN tb_Resource R ON R.[UID] = SRA.[ResourceID] AND R.IsActive = 1 LEFT JOIN tb_ResourceSkillset RSS ON RSS.[ResourceID] = R.[UID] AND RSS.IsActive =1 LEFT JOIN tb_Division D ON D.[UID] = R.[DivisionID] WHERE TSK.EndDate >= @StartDate AND TSK.EndDate <= @EndDate AND D.IsActive = 1 AND T.IsActive = 1 AND D.[UID] = (CASE WHEN @DivisionID > 0 THEN @DivisionID ELSE D.[UID] END) AND T.[UID] = (CASE WHEN @TechnologyID > 0 THEN @TechnologyID ELSE T.[UID] END) UNION SELECT 0 AS [SprintID] ,'' AS [Sprint] ,CAST(GETDATE() AS DATE) AS [StartDate] ,CAST(GETDATE() AS DATE) AS [EndDate] ,R.[UID] AS [ResourceID] ,R.[ResourceName] ,D.[UID] AS [DivisionID] ,D.[Division] ,T.[UID] AS [TechnologyID] ,T.Technology ,'Free' [FreeStatus] ,ISNULL(RSS.[Rating],0) [Rating] FROM tb_Technology T, tb_Resource R LEFT JOIN tb_ResourceSkillset RSS ON RSS.[ResourceID] = R.[UID] AND RSS.IsActive = 1 LEFT JOIN tb_Division D ON D.[UID] = R.[DivisionID] WHERE R.[UID] NOT IN (SELECT SRA.ResourceID FROM TasksResource SRA) AND R.IsActive = 1 AND T.IsActive = 1 AND D.[UID] = (CASE WHEN @DivisionID > 0 THEN @DivisionID ELSE D.[UID] END) AND T.[UID] = (CASE WHEN @TechnologyID > 0 THEN @TechnologyID ELSE T.[UID] END)
i'm using the above code..where my technology table has 18,900 rows and task has 109 rows.
when these 2 are cross joined i think more time taking...this query is taking much time to execute.pls help me how can i retrieve the result with less time.
total result is 3lakhs rows and running more than 7-8min..
lucky