php - ユーザーバランスと売上高の違いをより効率的に見つけるにはどうすればよいですか?
我想大声告诉你
我想大声告诉你 2017-05-16 13:12:08
0
1
593

user テーブルの Money はユーザーの残高で、stream テーブルの s_money はユーザーによって生成されたフローです。理論的には SUM(s_money) == お金、障害が発生したと仮定して、テーブル内の異なるデータを見つけるにはどうすればよいでしょうか?以下の図に示すように、ID=3 のユーザー。

補足: ユーザー テーブルの情報とユーザーの総売上高を確認する必要があります。

として

<テーブル> <頭> ID 名前 お金 SUM(s_money) 3 z 150 100 <時間>

ユーザー テーブルとストリーム テーブルを別々にクエリし、array_diff_assoc を通じて設定された差異を見つけてください。しかし効率は比較的低いです。

測定されたユーザー テーブルには 23,434 個のデータがあり、ストリーム テーブルには 361,024 個のデータがあります。合計 3.5 秒から 4 秒かかります。より効率的な方法はありますか?

<時間>

ユーザーテーブル:

<テーブル> <頭> ID 名前 お金 <本体> 1 長 50 2 W 100 3 Z 150

ストリームテーブル:

<テーブル> <頭> ID ユーザーID s_money <本体> 1 1 -50 2 1 100 3 2 -10 4 2 110 5 3 -10 6 3 110 <時間>

現在、userID にはインデックスが付けられており、実際のクエリ時間は 0.3 秒以内に向上しています。
オンライン環境は未検証なので使えるかわかりません

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

全員に返信(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;
Union インデックス効果が向上します: createindex INX_stream_us on stream (user_id,s_money);

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート