recherche

Maison  >  Questions et réponses  >  le corps du texte

php - Comment trouver plus efficacement la différence entre le solde des utilisateurs et le chiffre d'affaires?

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é

我想大声告诉你我想大声告诉你2793 Il y a quelques jours598

répondre à tous(1)je répondrai

  • 黄舟

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

    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);

    répondre
    0
  • Annulerrépondre