2013-10-20 130 views
0

下面是一個查詢,用於計算特定用戶的平均投票數並將其放入用戶表中。平均功能性能?

update usersinfo as users 
     set users.averageVote = 
     (select AVG(vote.votePoint) from votelist as vote 
       where users.userNum = vote.targetUserNum); 

'usersinfo'表有10K行,'votelist'表有大約15K行。每個用戶有1〜3個投票記錄。

'votelist'表中的'votePoint'是一個tinyint值(0〜100)。

'userNum'和'targetUserNum'是一箇中等int主鍵。

'usersinfo'表中的'averageVote'是一個小數(5,2)。

上述查詢的執行時間約爲83秒。有沒有什麼辦法來優化這個查詢的性能?

+2

indices .......... –

+0

@MitchWheat你的意思是添加votePoint作爲索引嗎?我做到了,執行時間縮短到了68秒。有沒有其他辦法可以縮短時間? –

回答

1
Create Index 
    I_TargetUserNum 
On votelist(
    targetusernum, 
    votepoint 
); 
+0

減少到0.125秒...謝謝! –