Heim >Datenbank >MySQL-Tutorial >Wie kann ich unterschiedliche Kombinationen über mehrere Spalten hinweg in SQL effizient zählen?
Effizientes Zählen von DISTINCT-Werten in mehreren Spalten
In einem Szenario, in dem Sie die Anzahl eindeutiger Kombinationen über mehrere Spalten hinweg bestimmen müssen, wird ein gemeinsamer Der Ansatz besteht darin, eine Unterabfrage mit der DISTINCT-Klausel zu verwenden. Allerdings kann diese Technik manchmal ineffizient sein. Hier untersuchen wir eine mögliche Optimierungsmethode.
Die bereitgestellte Abfrage zielt darauf ab, unterschiedliche „DocumentId“- und „DocumentSessionId“-Kombinationen aus der „DocumentOutputItems“-Tabelle zu zählen:
SELECT COUNT(*) FROM (SELECT DISTINCT DocumentId, DocumentSessionId FROM DocumentOutputItems) AS internalQuery
Um die Leistung zu verbessern, Erwägen Sie die Generierung einer persistenten berechneten Spalte basierend auf einem Hash oder einer verketteten Kombination der betreffenden Spalten. Sobald diese Spalte erstellt wurde, kann sie indiziert werden und mit Statistiken verknüpft werden, sofern geeignete Datenbankeinstellungen vorausgesetzt werden.
Durch die Nutzung dieser persistenten berechneten Spalte sollte eine DISTINCT-Zählungsoperation für das abgeleitete Feld ein äquivalentes Ergebnis wie die ursprüngliche Abfrage liefern . Dieser Ansatz macht eine Unterabfrage überflüssig und verbessert möglicherweise die Effizienz. Hier ist ein Beispiel:
ALTER TABLE DocumentOutputItems ADD DocumentUniqueIndex AS HASHBYTES('MD5', DocumentId + DocumentSessionId) PERSISTED; SELECT COUNT(DISTINCT DocumentUniqueIndex) FROM DocumentOutputItems;
Das obige ist der detaillierte Inhalt vonWie kann ich unterschiedliche Kombinationen über mehrere Spalten hinweg in SQL effizient zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!