2010-12-28 25 views
0

Hier ist der Deal: Es gibt eine riesige Datenbank mit Themen (enthält eine Reihe von Nachrichten) und eine riesige Datenbank für Benutzer. Jedes Thema kann mit vielen Benutzern verknüpft sein (offensichtlich ist jeder Benutzer ein Link zu vielen Themen). Es gibt ein Feld in der Datenbank (Verknüpfung von Benutzern mit Themen), die eine Anzahl ungelesener Nachrichten enthält. Also versuche ich, einen schnellen Weg zu finden, diese Nummer für jedes Thema zu erhalten, das mit einem aktuellen Benutzer verknüpft ist. Es ist wichtig, dass sich diese Zahl ziemlich schnell ändert, daher wird die Methode, dieses Feld jedes Mal aus der Datenbank zu lesen, alles verlangsamen. Gibt es irgendwelche Themen im Internet (ich suche nach guten 50 Minuten und immer noch mit nichts) oder vielleicht nur Ihre Ratschläge, um es schneller zu machen (ich dachte daran, den separaten Tisch zu machen, aber es stellte sich auch als langsam heraus). Vielen Dank!Methoden, um die Anzahl der ungelesenen Nachrichten zu erhalten

+0

Können Sie uns mehr Details über die Struktur Ihrer Datenbank geben und wie Sie jetzt die ungelesenen Nachrichten abfragen? –

+0

ok. Es gibt eine Tabellen USERS, THEMEN, Nachrichten, THEMEN_TO_USERS. Wenn sich der Benutzer anmeldet, erhält er die Liste seiner Themen mit einem Label für Themen mit ungelesenen Nachrichten (aus TOPICS_TO_USERS). Ich denke, es gibt keine Notwendigkeit, hier eine SELECT-Abfrage schreiben. und auf der Hauptseite möchte ich die Anzahl der ungelesenen/total_number Themen in den verschiedenen Kategorien von ihnen zeigen (wie 'Anzahl der ungelesenen, wo ich der Autor des Themas' etc .). – whn

Antwort

1

Caching! Sie müssen ungelesene Nachrichten und Themen im Benutzerdatensatz speichern. Sobald der Benutzer neue Nachrichten oder ein Thema an ihn angehängt bekommt, müssen Sie diese Dateien und dasselbe aktualisieren, wenn er sie liest. Sie können diese Daten in anderen Arten von Caches speichern (schnellere). Dies wird als De-Normalisierung bezeichnet.

Sie müssen auch richtige Tabellenindizes für diese Tabellen einrichten.

Verwandte Themen