2012-02-06 2 views
1

J'ai la possibilité d'utiliser une seule table qui s'étendra jusqu'à 1 000 000 d'enregistrements par an. Cela dit, je pourrais utiliser une clé étrangère pour diviser cette table en tables plus petites, ce qui réduira cette expansion à chaque petite table de 100 000 enregistrements par an. Disons que 50% du temps, les utilisateurs interrogeront tous les enregistrements où l'autre 50% du temps les utilisateurs interrogeront l'ensemble de données de la table plus petite segmentée. (penser en fonction de toutes les zones géographiques par rapport aux zones géographiques spécifiques)SQL grande table VS. Plusieurs petites tables

En utilisant une base de données gérée par un compte d'hébergement partagé (pensez au site5, godaddy, etc ...), est-il plus rapide d'utiliser une seule table plus grande ou d'utiliser plusieurs tables segmentées plus petites étant donné cette situation?

Où chaque ensemble de données est accédé 10% /% 90, 20% /% 80,% 30 /% 70 ... etc, à quel moment l'utilisation d'une seule table par plusieurs tables plus petites serait-elle la plus efficace?

+0

Je parie sur un seul plus grand. 50% c'est déjà beaucoup. – UmNyobe

+0

Donc, votre conception de base de données a juste cette table? –

+0

Non, bien sûr que non. Je parle spécifiquement de cette table. –

Répondre

1

En général, de manière à réduire la quantité d'informations dupliquées. Si vous créez des tables plus petites contenant de nombreuses colonnes redondantes, il semble que ce serait plus efficace d'avoir une seule table. Mais sinon, une table.

Cela dépend également du pourcentage d'utilisation de la ligne par requête et de la structure de vos requêtes. Si vous ajoutez beaucoup de jointures ou de sous-requêtes, cela sera probablement plus lent.

+1

Mais l'utilisation d'un compte d'hébergement partagé n'entraîne-t-elle pas d'importantes limitations sur la capacité de son matériel? Je me demande si la performance sera significativement affectée après avoir atteint X nombre d'enregistrements pour une seule table. –

+0

@ dan-kanze partage l'hébergement partage juste toutes les ressources, au meilleur de ma connaissance. Bien que ce soit une question intéressante que vous soulevez, en théorie les requêtes qui sont plus efficaces étant donné que l'accès à 100% du CPU sera toujours le plus efficace lorsque vous avez seulement accès à 10%. Il est peu probable qu'ils conservent toute la grande table en mémoire, mais d'un autre côté, il ne semble pas probable qu'ils vous permettent de tenir plusieurs tables plus petites en RAM non plus - je pense sincèrement que tout ce qui fonctionne donne plein L'accès à la RAM et à l'unité centrale sera également réduit au RAM/CPU étranglé. – Max

+0

Je suppose que ce que je demande est la différence entre deux implimentations. D'un côté, nous avons une grande table. 1/10ème de cette table sera accessible 50% du temps. Alors que 100% de la table sera accessible l'autre 50% du temps. Pensez à la même utilisation avec la seconde implémentation étant 10 tables avec une clé de forgien au lieu d'une grande table. –

Questions connexes