Optimierung der Chat-Anwendungsdatenbank

Ich arbeite an einer einfachen Chat-Anwendung mit database. Die database für das Projekt wird im image angezeigt.

Die Richtung Spalte in der Nachricht Tabelle ist nur zu bestimmen, ob user1 ist der Absender oder user2 ist der Absender.

Datenbank für Chat-Anwendung

Ich benutze diese Abfrage, um die Nachrichten zu erhalten:

SELECT TextContent,Direction FROM Messages WHERE User1 = 1 AND User2 = 2 ORDER BY Date 

Die Werte für User1 und User2 dienen lediglich der Klärung.

Ich habe zwei Fragen :

  1. Ich wählte keinen Primärschlüssel für Messages-Tabelle. Soll ich einfach die ID-Spalte als Primärschlüssel wählen oder mehrere Spalten für den Primärschlüssel auswählen?

  2. Soll ich einen Index auf (User1, User2, Date) Spalten oder auf (User1, User2, ID) Spalten erstellen? Soll ich einen Cluster-Index oder Nicht-Cluster-Index erstellen?

Ja, Sie sollten einen Primärschlüssel-gruppierten Index auf der ID-Spalte definieren.

Ja, Sie sollten einen nicht gruppierten zusammengesetzten Index auf (User1, User2, Date) definieren. ID ist bereits im nicht gruppierten Index "eingeschlossen", wenn Sie ID als gruppierten Index definieren.