2017-01-27 4 views
0

Je configure mes modèles et j'essaie d'éviter d'utiliser ManyToMany Relationships. J'ai cette configuration:Impact sur les performances des relations inverses dans Django

  • Modèle: Human
  • Certains humains (un petit pourcentage) ont besoin d'avoir des relations avec d'autres humains M2M. Appelons cette relation "sait" (relation inverse appelée "is_known_by").
  • Pour éviter de définir un ManyToManyField dans les humains, j'ai fait un Model FamousHumans.
  • FamousHumans sont une classe spéciale de l'homme et un OneToOneField (Human)
  • Ils ont aussi un ManyToManyField (humains) pour représenter le "sait" relation

Voici ma question: Depuis Django crée inverser les relations, je suppose que tous les humains auront une relation inverse "is_known_by" avec FamousHumans, donc il y a toujours une relation M2M. Y a-t-il des avantages de performance à mon installation?

L'ensemble de données sera plutôt volumineux et seulement quelques humains auront besoin de la relation M2M. Ma principale préoccupation est la performance.

Répondre

4

Ceci est inutilement complexe.

Il n'y a pas de surcharge liée aux performances pour une relation plusieurs-à-plusieurs. Ceci est représenté par une table intermédiaire dans la base de données; il n'y a pas de champ réel dans la table des humains. Si un élément n'a aucun membre m2m, aucune donnée n'est stockée.

+0

Merci. Je vais essayer de tout simplifier – rwms