2009-08-25 11 views
1

Ich habe Zweifel, wie ich eine Tabelle für die temporäre Speicherung von Fehlermeldungen erstellen kann.Primärschlüssel beim Speichern einer großen Datenmenge für eine kurze Zeit

  1. Viele Einfügungen und Löschungen
  2. Eine GUID als Fremdschlüssel, wahrscheinlich äußere
  3. Ein einfaches nvarchar Feld für die Errormessage

Welche Primärschlüssel verbunden gelassen werden, falls vorhanden, und Indizes sollte ich verwenden, um eine Menge Daten für eine kurze Zeit zu speichern?

Dank

+0

Haben Sie überlegt, ob eine Nachricht statt einer DB Ihre Anforderungen besser erfüllt? – RichardOD

+0

Ich bin leider von diesem Design sehr eingeschränkt – maxbeaudoin

Antwort

2

Ich würde mit Jay nicht übereinstimmen - überprüfen Sie Kim Tripp The Clustered Index Debate continues.

Unter anderem sagt sie, dass ein guten primären/gruppierten Schlüssel (bezogen auf einer Spalte INT IDENTITY - NICHT eine GUID Spalte) wird Ihre Einsätze tatsächlich beschleunigt und löscht.

Auch wenn Sie Ihre Tabelle nur für einen kurzen Zeitraum verwenden, wäre es ratsam, eine TableID INT IDENTITY(1,1) PRIMARY KEY Spalte zu haben, um einen guten, schnellen Primärschlüssel und Clustered-Index zu bekommen, und so wenig andere Indizes wie möglich wird die Einsätze sicher verlangsamen).

Abhängig davon, wie oft Sie Ihre GUID-Spalte als Fremdschlüssel referenzieren, möchten Sie vielleicht auch einen Index hinzufügen - da dies die Suche sicher beschleunigt.

Wenn Sie eine große Menge von Daten laden (sagt: Zehntausende von Zeilen gleichzeitig), könnten Sie auch daran denken, diesen Index vor dem Laden zu löschen und neu zu erstellen, sobald die Daten geladen sind (was wahrscheinlich geht) um schneller zu sein, als es immer an Ort und Stelle zu haben) - aber wieder: Das hängt davon ab, wie viele Daten Sie laden und wie oft.

Marc

0

Ich würde einen Index für Ihr GUID ausländischen ID-Feld setzen, weil Sie die Fehler auf, dass gehen zu aufzublicken basieren. Wie für Primärschlüssel. Sie haben keine Anforderung erwähnt, die die Notwendigkeit eines Primärschlüssels erzwingt. Und das bringt nur zusätzlichen Overhead. Allerdings müssen Sie wahrscheinlich eine Sortierung durchführen, und dazu benötigen Sie ein numerisches Feld oder ein Datumsfeld. Ich schlage vor, einfach ein numerisches Feld zur Tabelle hinzuzufügen, damit Sie basierend auf der Reihenfolge, in der Fehlermeldungen erstellt wurden, sortieren können. Aber Sie müssen dieses Feld wahrscheinlich nicht zu einem primären Feld machen, da die Daten nicht lange dauern.

Verwandte Themen