Heim >Datenbank >MySQL-Tutorial >Wie kann ich eindeutige Kombinationen über mehrere Spalten in einer Datenbanktabelle hinweg effizient zählen?
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!