2012-06-11 2 views
1

J'ai actuellement un site Web qui accède à 7 bases de données Access que j'ai désespérément besoin de déplacer vers SQL Server. La conception de 7 db est criante rapidement, mais évidemment très pauvre pour un certain nombre de raisons.Colonnes de table SQL Server 2012 et performances

Dans les 7 dbs j'ai collectivement plus de 375 champs de données uniques presque tous remplis - moins de 2% sont des zéros. En l'absence de quelques clés, il n'y a pas de duplication des données entre les 7, donc la normalisation n'est probablement pas un problème. Je voulais garder les tables petites, donc ce serait rapide. Les 7 tables ont toutes le même nombre d'enregistrements, soit 325 000 et jusqu'à 400 000 maximum.

Lorsque vous déplacez cela vers SQL Server, dois-je conserver les 7 tables uniques ou les combiner en 1? Ma compréhension (limitée comme il est) était que je devrais être très discipliné dans mes procédures stockées pour ramener seulement les colonnes dont j'ai besoin. Étant donné la grande variété de questions similaires, je ne suis toujours pas parvenu à un "consensus" sur la meilleure approche.

Merci.

+0

Le schéma de chacune des 7 tables est-il le même? –

+0

"Je voulais garder les tables petites afin que ce soit rapide." Euh? –

+0

Vous ne savez pas comment répondre à la question du schéma. Les données sont des données bancaires, de sorte qu'un db contient un bilan, une autre donnée de prêt, un autre état des résultats et ainsi de suite. Toutes les données sont liées par un identifiant bancaire unique. Pas de duplication et pas beaucoup de null. –

Répondre

2

Cela dépend de vos modèles d'accès. Avez-vous souvent besoin d'accéder aux données de plusieurs partitions à la fois? Ensuite, vous devriez probablement les combiner.

Quoi qu'il en soit, le développement est probablement plus facile quand vous avez seulement une table (sans jointures un-à-un). S'il n'y a pas de raison particulière de les séparer, combinez-les.

Avertissement: Je pense qu'il existe une limite de colonne dans SQL Server.

Vous pouvez exposer des sous-ensembles de colonnes en créant des index. Chaque index serait défini sur la colonne ID avec un sous-ensemble arbitraire de colonnes en tant que colonnes «incluses». Cela laissera le choix à l'optimiseur. Il choisira la meilleure façon possible. Il peut également se joindre entre les index de sorte que vous êtes dans une situation de victoire totale de cette façon.

Recommandation: Combinez les tables en une seule et créez un index pour chaque table que vous aviez précédemment.

+0

Merci USR, j'apprécie votre temps. Je crois que vous avez raison sur la limite (1024). Ma principale préoccupation n'est pas la facilité de développement, mais plutôt la rapidité des procédures stockées pour ramener les données. –

+0

Ok, à partir de cet objectif, votre décision dépend de vos habitudes d'accès. – usr

+0

Je me rends compte que cela va paraître complètement naïf, mais que signifie "Access Patterns"? Je vais frapper la table avec plus de 70 procédures stockées touchant toutes les différentes colonnes (champs). Un SP peut frapper les colonnes A et B et C tandis qu'un autre frappera D & E. –

Questions connexes