2017-03-28 21 views
0

我有三個表格,一個用戶自定義級別,另外兩個表格用於上述級別的upvotes和downvotes。SQL定期統計一個表中的所有新選票並在另一個表中增加總計數值

我現在有近千萬的選票投票,而且每當有必要時計算所有選票的等級變得非常慢,所以我打算在關卡表上添加兩列,並記錄upvotes和downvotes ,服務器將每24小時更新一次。

不幸的是,投票表沒有自動遞增的主鍵列,而是主鍵是mapid和userid的組合,所以一個用戶不能爲同一個映射投票兩次。

所以我在投票表中添加了一列「計數」,如果它沒有被添加到聚合數據中,則爲0,如果它具有1則爲0。這樣我就不需要重新計算已經添加到彙總數據中的所有投票,只有新的投票。

我的查詢需要:

- 選擇都具有其計計數設爲0

-Take從該行的的azazaz,並增加thumbsup計數的水平表

說的azazaz票

- 設置爲1表示該投票

我正在使用MySQL。所有幫助非常感謝!

Table maps_thumbsup 
userid | mapid | counted 

Table maps_thumbsdown 
userid | mapid | counted 

Table maps 
id | authorname | leveldata | ... | thumbsupcount | thumbsdowncount 
+0

什麼是你的數據庫結構,到目前爲止你試過了什麼? – vaso123

+0

包括模式或表格表示將有助於回答您的問題 – KidTempo

+0

模式將會有所幫助。此外,聽起來您可以從使用某些唯一索引中受益。您是否調整過MySQL的性能,或者您是否使用默認值? – Coop

回答

0

不是你的主表已經有票數了嗎? 牛逼

able maps_thumbsup 
userid | mapid | counted 

Table maps_thumbsdown 
userid | mapid | counted 

Table maps 
id | authorname | leveldata | ... | thumbsupcount | thumbsdowncount 

所以每次有人票最多隻是在MySQL中使用set命令「設置thumbsup = thumbsup + 1」,如果它不具有2列然後加它,你可以給我你的界面鍵入mysql/mysql/DBO我可以更新我的答案郵政編碼爲它計數和插入計數到新創建的列沒有必要計算所有的選票每次只獲得單個值從數據庫然後你可以用這種方式獲得票

+0

我是個白癡,當然我可以做到這一點 –

相關問題