Я бы попытался разбить это
projectID IN (SELECT projectID FROM tblProjects WHERE userID = 5)
и используйте вместо этого JOIN:
SELECT
projectID, urlID, COUNT(1) AS totalClicks, projectPage,
(SELECT COUNT(1) ....) AS totalViews
FROM
dbo.tblAdClicks a
INNER JOIN
dbo.tblProjects p ON a.ProjectID = p.ProjectID
WHERE
p.UserID = 5
GROUP BY
a.projectID, a.urlID, a.projectPage
ORDER BY
CASE a.projectID
WHEN 170 THEN 1
ELSE 0
END, a.projectID
Не уверен, насколько это поможет - надеюсь, немного поможет!
Кроме этого, я бы проверил, есть ли у вас индексы в соответствующих столбцах, например на a.ProjectID
(чтобы помочь с JOIN) и, возможно, на a.urlID
и a.ProjectPage
(чтобы помочь с GROUP BY
)