每次用戶訪問頁面時,我都會使用logtime對其進行登錄,現在我想查找ID爲「MyID」的用戶的最新不同100頁。對SQL性能的建議
我使用以下SQL來選擇不同的記錄,但性能不佳。任何人都可以有任何改善建議嗎?
Select distinct Top 100 Url,PageName,
(select top 1 inner_pa.LogTime from PageActivity inner_pa with(nolock)
where inner_pa.Key = pa.Key
and inner_pa.UserID='MyID'
order by inner_pa.LogTime Desc) as LogTime
From PageActivity pa WITH(NOLOCK)
Where pa.UserId='MyID'
Order By LogTime DESC
==================================
表模式是如下
ID int(PK)
PageName varchar
Key varchar
Username varchar
Url text
LogTime datetime
所以,如果我有以下記錄
ID PageName Key UserName Url LogTime
1 PageA post MyID PageA.html 2011/1/1/12:10:10
2 PageA post MyID PageA.html 2011/1/1/12:10:15
3 PageB post MyID PageB.html 2011/1/1/12:10:30
4 PageB post MyID PageB.html 2011/1/1/12:10:45
4 PageB post OtherID PageB.html 2011/1/1/12:10:48
我從查詢想要的結果將是
PageName Url
PageA PageA.html
PageB PageB.html
============================================= ========================
事情變了。現在,網址將結合不同表中的字段,如
Select distinct Top 100 pa.PageName,
pu.URL + '=' + pa.Key as URL,
(select top 1 inner_pa.LogTime from PageActivity inner_pa with(nolock)
where inner_pa.Key = pa.Key
and inner_pa.UserID='MyID'
order by inner_pa.LogTime Desc) as LogTime
From PageActivity pa WITH(NOLOCK)
Join PageUrl pu on pa.UrlID = pu.ID
Where pa.UserId='MyID'
Order By LogTime DESC
任何想法?
屏幕截圖請..或發佈兩個表及其FK的等 – 2011-03-03 11:05:27
您好我已經添加了表模式,例如數據和查詢所需的結果。請指教。 – Charlie 2011-03-17 09:46:54