php - Comment trouver plus efficacement la différence entre le solde des utilisateurs et le chiffre d'affaires?
我想大声告诉你
我想大声告诉你 2017-05-16 13:12:08
0
1
582

Money dans la table user est le solde de l'utilisateur, et s_money dans la table stream est le flux généré par l'utilisateur. Théoriquement SUM(s_money) == money, en supposant qu'une panne se produise, comment connaître les différentes données du tableau ? Comme le montre la figure ci-dessous, l'utilisateur avec ID=3.

Supplément : Vous devez connaître les informations du tableau des utilisateurs et le chiffre d'affaires total de l'utilisateur

Comme

ID nom argent SUM(s_money) 3 z 150 100

Essayez d'interroger les tables d'utilisateur et de flux séparément et trouvez la différence définie via array_diff_assoc. Mais l'efficacité est relativement faible.

La table utilisateur mesurée contient 23 434 éléments de données et la table de flux contient 361 024 éléments de données. Cela prend un total de 3,5 s à 4 s. Existe-t-il une méthode plus efficace ?


table des utilisateurs :

ID nom argent 1 L 50 2 W 100 3 Z 150

tableau de flux :

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

Actuellement, l'ID utilisateur est indexé et les performances ont augmenté plusieurs fois. Le temps de requête réel est inférieur à 0,3 s.
L'environnement en ligne n'a pas été testé, donc je ne sais pas s'il peut être utilisé

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

répondre à tous(1)
黄舟

sélectionnez t1.id,t1.name,t1.money,t2.s_money de l'utilisateur t1,(select userID,sum(s_money) s_money du groupe de flux par userID) t2 où t1.id=t2.userid;
Peut établir un union L'effet d'indexation sera meilleur : créez l'index INX_stream_us sur stream (user_id,s_money);

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal