Heim >Datenbank >MySQL-Tutorial >Wie kann ich eindeutige Kombinationen über mehrere Spalten in einer Datenbanktabelle hinweg effizient zählen?

Wie kann ich eindeutige Kombinationen über mehrere Spalten in einer Datenbanktabelle hinweg effizient zählen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-05 21:48:40557Durchsuche

How Can I Efficiently Count Unique Combinations Across Multiple Columns in a Database Table?

Eindeutige Werte über mehrere Spalten hinweg zählen: Alternativen zu Unterabfragen

Wenn Sie vor der Aufgabe stehen, eindeutige Werte aus einer Tabelle basierend auf mehreren Spalten zu zählen, wie z. B. DocumentId und DocumentSessionId , besteht die natürliche Neigung darin, einen Unterabfrageansatz zu verwenden. Dies kann jedoch Bedenken hinsichtlich der Leistungsoptimierung aufwerfen.

Eine Alternative zur Verwendung einer Unterabfrage besteht darin, eine persistente berechnete Spalte zu erstellen. Dies kann durch Hashing oder Verkettung der gewünschten Spalten erreicht werden, um ein deterministisches Ergebnis sicherzustellen, das indiziert werden kann und auf dem Statistiken erstellt werden können.

Wenn es sich bei den fraglichen Spalten beispielsweise um DocumentId und DocumentSessionId handelt, wird eine berechnete Spalte mit dem Namen „ HashValue könnte mit einer Hash-Funktion wie SHA1 oder MD5 erstellt werden:

ALTER TABLE DocumentOutputItems ADD COLUMN HashValue AS SHA1(DocumentId + DocumentSessionId);

Sobald die berechnete Spalte beibehalten wird und Indiziert entspricht eine eindeutige Zählung dieser Spalte dem gewünschten Ergebnis:

SELECT COUNT(DISTINCT HashValue) FROM DocumentOutputItems;

Durch die Verwendung einer persistenten berechneten Spalte können Sie Indizierung und Statistiken nutzen, um die Leistung zu verbessern, sodass keine Unterabfrage erforderlich ist.

Das obige ist der detaillierte Inhalt vonWie kann ich eindeutige Kombinationen über mehrere Spalten in einer Datenbanktabelle hinweg effizient zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn