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