vivek009
Starting Member
1 Post |
Posted - 2012-02-22 : 12:38:00
|
Hello Experts,Can anyone help me to reduce the number of joins in the query without impacting the output and there by improving the performance.(SELECT DISTINCT Mmap1.AdvertiserID, Mmap1.AdvertiserName, CampaignID, CampaignName, PA1.ActionID, A1.ActionDescription, StartDate, EndDateFROM (SELECT CD.AdvertiserID, CD.AdvertiserName, CD.CampaignID, CD.CampaignName, MediaPlanID, StartDate, EndDate, max(CD.CreateDate) CreateDate FROM Campaign_Definition CD JOIN ST_Campaign C ON (CD.CampaignID = C.CampaignID) WHERE DestinationUrl = 'All' GROUP BY CD.AdvertiserID, CD.AdvertiserName, CD.CampaignID, CD.CampaignName, MediaPlanID, DestinationUrl, StartDate, EndDate ) Mmap1JOIN ST_Plmt_Mp_Ad PMA1ON (Mmap1.MediaPlanID = PMA1.MediaPlanID)JOIN (SELECT PlacementID, AdID, ActionID, DayDate, MAX(LoadTimeStamp) LoadTimeStamp FROM ST_PlacementAdActionDay GROUP BY PlacementID, AdID, ActionID, DayDate ) PA1ON (PMA1.PlacementID = PA1.PlacementIDAND PMA1.AdID = PA1.AdIDAND DayDate between Mmap1.StartDate and (CASE WHEN Mmap1.EndDate IS NULL THEN GETDATE() ELSE Mmap1.EndDate END))JOIN ST_Action A1 ON (PA1.ActionID = A1.ActionIDAND PMA1.AdvertiserID = A1.AdvertiserID)WHERE Mmap1.CreateDate > '1/1/2011' OR PA1.LoadTimeStamp > '1/1/2011' )UNION(SELECT DISTINCT Mmap2.AdvertiserID, Mmap2.AdvertiserName, CampaignID, CampaignName, PA2.ActionID, A2.ActionDescription, StartDate, EndDateFROM (SELECT CD.AdvertiserID, CD.AdvertiserName, CD.CampaignID, CD.CampaignName, MediaPlanID, StartDate, EndDate, DestinationUrl, max(CD.CreateDate) CreateDate FROM Campaign_Definition CD JOIN ST_Campaign C ON (CD.CampaignID = C.CampaignID) WHERE DestinationUrl <> 'All' GROUP BY CD.AdvertiserID, CD.AdvertiserName, CD.CampaignID, CD.CampaignName, MediaPlanID, StartDate, EndDate, DestinationUrl ) Mmap2JOIN ST_Plmt_Mp_Ad PMA2ON (Mmap2.MediaPlanID = PMA2.MediaPlanIDAND Mmap2.DestinationUrl = PMA2.DestinationURL)JOIN (SELECT PlacementID, AdID, ActionID, DayDate, MAX(LoadTimeStamp) LoadTimeStamp FROM ST_PlacementAdActionDay GROUP BY PlacementID, AdID, ActionID, DayDate ) PA2ON (PMA2.PlacementID = PA2.PlacementIDAND PMA2.AdID = PA2.AdIDAND DayDate between Mmap2.StartDate and (CASE WHEN Mmap2.EndDate IS NULL THEN GETDATE() ELSE Mmap2.EndDate END))JOIN ST_Action A2 ON (PA2.ActionID = A2.ActionIDAND PMA2.AdvertiserID = A2.AdvertiserID)WHERE Mmap2.CreateDate > '1/1/2011'OR PA2.LoadTimeStamp > '1/1/2011' )Thanks in advance.. |
|