2009-08-25 6 views
1

Je doute de la façon de créer une table pour les messages d'erreur de stockage temporaire.Clé primaire lorsque vous stockez beaucoup de données pendant une courte période de temps

  1. Beaucoup d'inserts et supprime
  2. GUID comme clé étrangère, susceptible d'être externe gauche a rejoint
  3. Un simple champ nvarchar pour la ErrorMessage

Quelle clé primaire, le cas échéant, et les index dois-je utiliser pour stocker beaucoup de données pour une courte période de temps?

Merci

+0

Avez-vous examiné si un message au lieu d'une base de données répondrait mieux à vos besoins? – RichardOD

+0

Je suis très contraint par ce design malheureusement – maxbeaudoin

Répondre

2

Je ne suis pas d'accord avec Jay - consultez lede Kim Tripp.

Entre autres, elle a dit que d'avoir une bonne clé primaire/cluster (sur une colonne INT IDENTITY - PAS une colonne GUID) va effectivement accélérer vos insertions et modifications. Donc, même si vous n'utilisez votre table que pour une courte période de temps, il est conseillé d'avoir une colonne TableID INT IDENTITY(1,1) PRIMARY KEY pour obtenir une bonne clé rapide et un index cluster, et aussi peu d'autres indices que possible (puisque ceux-ci ralentira les inserts à coup sûr).

Selon la fréquence à laquelle vous allez référencer votre colonne GUID comme clé étrangère, vous pouvez également ajouter un index là-bas, car cela accélèrera certainement les recherches.

Si vous chargez beaucoup de données en masse (par exemple, dix des milliers de lignes à la fois), vous pouvez également envisager de supprimer cet index avant le chargement et de le recréer une fois les données chargées (ce qui se passe probablement être plus rapide que de l'avoir en place tout le temps) - mais encore une fois: cela dépend de la quantité de données que vous chargez, et à quelle fréquence.

Marc

0

Je mettrais un index sur votre champ GUID ID étranger, parce que vous allez être à la recherche les erreurs sur cette base. Comme pour la clé primaire. vous n'avez pas mentionné une exigence qui force le besoin d'une clé primaire. Et cela va ajouter quelques frais supplémentaires. Cependant, vous aurez probablement besoin de faire un tri, et pour cela vous aurez besoin d'un champ numérique ou d'un champ de date. Je suggère simplement d'ajouter un champ numérique à la table, de sorte que vous pouvez trier en fonction de l'ordre des messages d'erreur ont été créés. Mais vous n'avez probablement pas besoin de faire de ce champ un champ primaire, car les données ne durent pas longtemps.

Questions connexes