php - 如何比較高效率的求出使用者餘額與流水的差異資料?
我想大声告诉你
我想大声告诉你 2017-05-16 13:12:08
0
1
564

user表中money為使用者餘額,stream表中s_money為使用者產生的管線。理論上SUM(s_money) == money,假設故障,如何找出表中存在差異的資料?如下圖 ID=3 的使用者。

補充:需要查出user表中的信息,以及該用戶的流水總和

ID name money SUM(s_money)
3 z 150 100

嘗試分別查詢user,和stream表,透過array_diff_assoc求差集。但是效率比較低。

實測user表 23434條數據, stream表 361024條數據,總共耗時3.5s-4s。有比較有效率的方法嗎?


user表:

ID name money
1 L 50
2 W 100
3 Z 150

stream(流水)表:

ID userID s_money
1 1 -50
2 1 100
3 2 -10
4 2 110
5 3 -10
6 3 110

目前給userID建立索引,效能翻了好幾倍,實測查詢0.3s 以內。
線上環境未測試,不懂能不能吃的消

我想大声告诉你
我想大声告诉你

全部回覆(1)
黄舟

select t1.id,t1.name,t1.money,t2.s_money from user t1,(select userID,sum(s_money) s_money from stream group by userID) t2 where t1.id=t2.userid;
可以建立聯合聯合體索引效果會更好:create index INX_stream_us on stream (user_id,s_money);

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板