sql - how to minimize multiple subqueries? -
i have following query bit slow, can see there couple of nested queries in clause, can come better solution?
select m.briefmedialist, count(distinct s.value) selected, m.briefmedialistid vwmedialistmediachannels m left join sessionfilters s on s.field = 'media' , m.briefmedialistid = s.value , s.sessionid = @sessionid m.id = (select d.briefid dashboards d d.dashboardguid in (select value sessionfilters s s.sessionid = @sessionid , s.field = 'dashboardid')) group m.briefmedialist, m.briefmedialistid order m.briefmedialist
select m.briefmedialist, count(distinct d.dashboardguid) selected, m.briefmedialistid vwmedialistmediachannels m left join sessionfilters s on s.value = m.briefmedialistid , s.field = 'media' , s.sessionid = @sessionid join dashboards d on d.briefid = m.id join sessionfilters sf on sf.value = d.dashboardguid , sf.field = 'dashboardid' , sf.sessionid = @sessionid group m.briefmedialist, m.briefmedialistid order m.briefmedialist similar nenad pulling conditions join can let query optimizer filter
check out in query optimizer.
have indexes on join conditions.
last resort try joins hints (merge, hash, loop).
on complex query query optimizer not evaluate join options don't think case here.
if see loop joins try merge on 2 sessionfilters joins.
the next step create #temp tables declared pk
select distinct(s.value) sessionfilters s s.field = 'media' , s.sessionid = @sessionid select distinct(sf.value) sessionfilters sf sf.sessionid = @sessionid , sf.field = 'dashboardid'
Comments
Post a Comment