Maison > base de données > tutoriel mysql > Comment puis-je compter efficacement les combinaisons distinctes sur plusieurs colonnes dans SQL ?

Comment puis-je compter efficacement les combinaisons distinctes sur plusieurs colonnes dans SQL ?

DDD
Libérer: 2025-01-06 01:00:39
original
630 Les gens l'ont consulté

How Can I Efficiently Count Distinct Combinations Across Multiple Columns in SQL?

Compter efficacement les valeurs DISTINCT dans plusieurs colonnes

Dans un scénario où vous devez déterminer le nombre de combinaisons uniques dans plusieurs colonnes, un problème commun L'approche consiste à utiliser une sous-requête avec la clause DISTINCT. Cependant, cette technique peut parfois s’avérer inefficace. Ici, nous explorons une méthode d'optimisation potentielle.

La requête fournie vise à compter les combinaisons distinctes "DocumentId" et "DocumentSessionId" de la table "DocumentOutputItems" :

SELECT COUNT(*) 
FROM (SELECT DISTINCT DocumentId, DocumentSessionId
      FROM DocumentOutputItems) AS internalQuery
Copier après la connexion

Pour améliorer les performances, envisagez de générer une colonne calculée persistante basée sur un hachage ou une combinaison concaténée des colonnes en question. Une fois créée, cette colonne peut être indexée et avoir des statistiques associées, en supposant des paramètres de base de données appropriés.

En exploitant cette colonne calculée persistante, une opération de comptage DISTINCT sur le champ dérivé devrait donner un résultat équivalent à la requête d'origine. . Cette approche élimine le besoin d’une sous-requête et améliore potentiellement l’efficacité. Voici un exemple :

ALTER TABLE DocumentOutputItems
ADD DocumentUniqueIndex AS HASHBYTES('MD5', DocumentId + DocumentSessionId) PERSISTED;

SELECT COUNT(DISTINCT DocumentUniqueIndex)
FROM DocumentOutputItems;
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal