2011-03-21 5 views
0

Je travaille actuellement avec MS SQL 2005, et j'ai une table qui a 17 colonnes, et l'espace que les données dans chaque ligne prendrait est seulement un peu moins que ce qui est autorisé (par ligne/enregistrement) dans MS SQL 2005 Et il est certain que je ne peux pas décomposer cela en tables plus petites car les données stockées dans cette table sont entrées à partir de feuilles excel dont je ne contrôle pas le contenu.Une seule grande table sql ou plusieurs petites tables sql?

Maintenant, le fait est que, pour presque tout sur le site Web qui utilise cette base de données, cette table principale fournit les ensembles de résultats, et ces ensembles de résultats sont déjà connus. Donc, ce qui serait mieux des deux: a) Je fais usage de la grande table à chaque fois. b) Je crée des tables plus petites et les dépeuple/les remplit dès que les données sont éditées dans la grande table. Par exemple: Des feuilles Excel contenant les détails des produits arrivent (presque chaque semaine) de divers fabricants, et elles sont stockées dans la table des PRODUITS (grande). Maintenant, il y a des requêtes telles que:

SELECT DISTINCT Brand_name, Model_name FROM PRODUCTS

et

SELECT DISTINCT Brand_name, Model_name FROM PRODUCTS WHERE Price < 10 et environ 10-15 comme ceux-ci. Maintenant, ma question est la suivante: Dois-je construire des tables déjà agrégées pour ces choses qui sont environ 5 autres que la table PRODUCTS, et les mettre à jour quand une feuille arrive, ou dois-je simplement exécuter toutes mes requêtes de récupération sur le PRODUITS table?

La table PRODUCTS contient environ 500 000 lignes au maximum à la fois.

+0

Quelle est la définition de la table? Utilisez-vous des colonnes de longueur fixe lorsque la longueur variable peut être meilleure? –

+0

Oui J'utilise varchar (n) (ce n varie en fonction de la colonne) pour 15 colonnes, et flotter pour deux colonnes. Vous n'avez pas vraiment de connaissances sur les colonnes de longueur variable – Anchit

+1

@Anchit - Vous ne devriez pas être proche de la limite de lignes dans SQL Server 2005 (si les lignes sont> 8000 octets, elles déborderont dans les pages row_overflow) –

Répondre

4

Je serais enclin à coller avec votre table unique. 500k disques n'est pas trop massif. Si vous vous assurez qu'il est correctement indexé pour les sélections communes que vous utilisez, vous trouverez probablement que c'est assez rapide. Essayez des tests contrôlés et répétables pour voir quels gains de vitesse vous pouvez obtenir avec les bons index.

+0

Ok, donc je suis assez n00b en SQL, pouvez-vous s'il vous plaît me fournir un lien vers un bon article concernant la création d'index, et oui aussi, comment puis-je vérifier les vitesses? o_0 (désolé d'être un tel noob) – Anchit

+2

Essayez http://www.sqlservercentral.com/articles/Performance+Tuning/indexcreationguidelines/1389/ il peut être nécessaire de s'inscrire gratuitement pour pouvoir lire. C'est un excellent site pour tout ce qui concerne SQL. – bendemes

+0

Merci beaucoup. Juste en vérifiant le lien. – Anchit