The OR conditions may be slow. Try three queries and a UNION instead?SELECT TOP 300 *FROM(SELECT TOP 300 p.member_id, p.ssn, p.prefix, p.fname, p.mname, p.lname, p.suffix, p.birthdate, p.coast_guard_ind, pe.email, p.create_date, uv.fname + ' ' + uv.lname AS created_by, p.update_date, uv2.fname + ' ' + uv2.lname AS updated_by FROM member p LEFT JOIN member_email pe ON pe.member_id = p.member_id AND pe.active_ind = 1 LEFT JOIN vw_users uv ON uv.user_id = p.created_by LEFT JOIN vw_users uv2 ON uv2.user_id = p.updated_by WHERE 1=1 AND p.create_date BETWEEN '2011-07-18 00:00:00.0' AND '2011-09-22 23:59:59.999' AND ( p.first_association_code = 'GDM' ) AND p.active_ind = 1 ORDER BY p.lname, p.fnameUNIONSELECT TOP 300 p.member_id, p.ssn, p.prefix, p.fname, p.mname, p.lname, p.suffix, p.birthdate, p.coast_guard_ind, pe.email, p.create_date, uv.fname + ' ' + uv.lname AS created_by, p.update_date, uv2.fname + ' ' + uv2.lname AS updated_by FROM member p LEFT JOIN member_email pe ON pe.member_id = p.member_id AND pe.active_ind = 1 LEFT JOIN vw_users uv ON uv.user_id = p.created_by LEFT JOIN vw_users uv2 ON uv2.user_id = p.updated_by WHERE 1=1 AND p.create_date BETWEEN '2011-07-18 00:00:00.0' AND '2011-09-22 23:59:59.999' AND EXISTS ( SELECT 'true' FROM member_course pc INNER JOIN ps_course c ON pc.course_id = c.course_id INNER JOIN ps_association o ON o.org_id = c.org_id WHERE p.member_id = pc.member_id AND o.sponsor_code = 'GDM' AND pc.active_ind = 1 ) AND p.active_ind = 1 ORDER BY p.lname, p.fnameUNIONSELECT TOP 300 p.member_id, p.ssn, p.prefix, p.fname, p.mname, p.lname, p.suffix, p.birthdate, p.coast_guard_ind, pe.email, p.create_date, uv.fname + ' ' + uv.lname AS created_by, p.update_date, uv2.fname + ' ' + uv2.lname AS updated_by FROM member p LEFT JOIN member_email pe ON pe.member_id = p.member_id AND pe.active_ind = 1 LEFT JOIN vw_users uv ON uv.user_id = p.created_by LEFT JOIN vw_users uv2 ON uv2.user_id = p.updated_by WHERE 1=1 AND p.create_date BETWEEN '2011-07-18 00:00:00.0' AND '2011-09-22 23:59:59.999' AND EXISTS ( SELECT 'true' FROM member_association po INNER JOIN ps_association o ON o.org_id = po.association_id WHERE p.member_id = po.member_id AND o.sponsor_code = 'GDM' AND po.active_ind = 1 ) AND p.active_ind = 1 ORDER BY p.lname, p.fname) AS X ORDER BY lname, fname
Not sure if I can get away with those ORDER BY on each union'd query, or if they each need to be wrapped bySELECT *FROM( ... query ...) AS X
I recommend you take the hyphens out of the dates - they are not fully un-ambiguous with hyphens, i.e. change'2011-07-18 00:00:00.0'
to'20110718 00:00:00.0'