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
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:
jadual strim:
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
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);