cari

Rumah  >  Soal Jawab  >  teks badan

php - Bagaimana untuk mencari perbezaan antara baki pengguna dan perolehan dengan lebih cekap?

Wang dalam jadual pengguna ialah baki pengguna dan s_money dalam jadual strim ialah aliran yang dijana oleh pengguna. Secara teorinya SUM(s_money) == wang, dengan mengandaikan kegagalan berlaku, bagaimana untuk mengetahui data yang berbeza dalam jadual? Seperti yang ditunjukkan dalam rajah di bawah, pengguna dengan ID=3.

Tambahan: Anda perlu mengetahui maklumat dalam jadual pengguna dan jumlah pusing ganti pengguna

Sebagai

ID nama wang SUM(s_money) 3 z 150 100

Cuba tanya pengguna dan strim jadual secara berasingan, dan cari perbezaan yang ditetapkan melalui array_diff_assoc. Tetapi kecekapannya agak rendah.

Jadual pengguna yang diukur mempunyai 23,434 keping data dan jadual strim mempunyai 361,024 keping data Ia mengambil masa sebanyak 3.5s-4s. Adakah terdapat kaedah yang lebih berkesan?


jadual pengguna:

ID nama wang 1 L 50 2 W 100 3 Z 150

jadual strim:

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

Pada masa ini, ID pengguna diindeks dan prestasi telah meningkat beberapa kali Masa pertanyaan sebenar adalah dalam 0.3s.
Persekitaran dalam talian belum diuji, jadi saya tidak tahu sama ada ia boleh digunakan

我想大声告诉你我想大声告诉你2755 hari yang lalu573

membalas semua(1)saya akan balas

  • 黄舟

    黄舟2017-05-16 13:14:08

    pilih t1.id,t1.name,t1.money,t2.s_money daripada pengguna t1,(pilih userID,jumlah(s_money) s_money daripada kumpulan strim mengikut userID) t2 di mana t1.id=t2.userid;
    Boleh mewujudkan kesatuan Kesan pengindeksan akan menjadi lebih baik: buat indeks INX_stream_us pada strim (user_id,s_money);

    balas
    0
  • Batalbalas