2010-09-29 7 views
0

J'ai une base de données MySQL que j'utilise avec Django. Une de mes tables compte environ 60 colonnes. Je me demande s'il faut le diviser en 5-6 petites tables. Cela aurait un sens logique, puisque les colonnes se divisent bien en 5-6 groupes logiques.Django/SQL: qu'est-ce qui est le plus efficace, plus de colonnes ou plus de tables?

L'inconvénient serait que quelques-unes des pages Django aurait alors besoin de 5-6 requêtes de ligne au lieu de 1.

Est-il plus efficace d'avoir une table avec plusieurs colonnes, ou plusieurs tables avec moins de colonnes? Si le premier est, quel est le désavantage d'avoir plusieurs tables? (Dans la mesure où l'on peut quantifier ces choses ...)

Merci pour vos conseils :)

Répondre

0
  1. Utilisez vieux rasoir Opccams. Ne faites pas de mouvements inutiles. Êtes-vous d'accord avec votre table? Si oui, laissez-le tel quel. Ne vous faites pas un problème de nulle part.

  2. Vous avez tort à propos de 6 requêtes. Ce sera toujours une seule requête. Mais voir point 1.

+0

heh :) c'est juste un peu compliqué d'avoir autant de colonnes, mais je soupçonne que vous pourriez avoir raison ... – AP257

+1

@ AP257 lourd à qui? Pour la base de données? Je peux vous assurer qu'il peut gérer dix fois plus. À toi? Mais il n'y aura pas de différence lorsque vous obtiendrez le résultat final. Oui, le nombre semble assez grand. Mais l'optimisation de la structure de la base de données ne se limite pas au fractionnement des tables. Faites votre structure de base de données basée sur des principes logiques, pas une telle erreur .. émotions –

0

S'il est logique de les diviser en plusieurs modèles, puis les diviser. Juste pour des raisons d'efficacité, ne les gardez pas en modèle unique.

La performance/efficacité de la récupération des données dépend vraiment de la manière dont vous structurez votre requête. Aucun point de chargement des 70 colonnes en mémoire lorsque vous utiliserez seulement 5 - 10 champs. Vous pouvez simplement sélectionner ce que vous voulez en utilisant .values ​​().

également lorsque vous diviser en plusieurs modèles et à l'aide de clés étrangères pour les relier, vous à l'aide select_related peut récupérer les mêmes informations sur moins de requêtes et parfois même 1.

Si nous pouvons voir le modèle, peut-être que nous pouvons donner nos meilleurs avis.

Questions connexes