SELECT projectID, urlID, COUNT(1) AS totalClicks, projectPage,
(SELECT COUNT(1)
FROM tblStatSessionRoutes, tblStatSessions
WHERE tblStatSessionRoutes.statSessionID = tblStatSessions.ID
AND tblStatSessions.projectID = tblAdClicks.projectID
AND (tblStatSessionRoutes.leftPageID = tblAdClicks.projectPage OR
tblStatSessionRoutes.rightPageID = tblAdClicks.projectPage)) AS totalViews
FROM tblAdClicks
WHERE projectID IN (SELECT projectID FROM tblProjects WHERE userID = 5)
GROUP BY projectID, urlID, projectPage
ORDER BY CASE projectID
WHEN 170 THEN
1
ELSE
0
END, projectID
這絕不是一個特別複雜的查詢,但因爲數據庫是歸到一個較好的水平,我們正在處理的數據的顯著量,這種查詢可以是相當緩慢用戶。運行SQL查詢更快
有沒有人有提示如何提高它的速度?如果我戰略性地對數據庫的某些部分進行非規範化,這會有幫助嗎?在存儲過程中運行它會提供顯着的改進嗎?
我在我的代碼中處理數據的方式非常有效,瓶頸實際上就是這個查詢。
謝謝!
您使用的是什麼RDBMS? MySQL,SQL Server,Postgres? – 2011-01-06 12:06:17
SQL-Server就是這樣運行的。只有v2000有點垃圾! – 2011-01-06 12:08:07