Maison > base de données > tutoriel mysql > Comment puis-je compter efficacement les combinaisons uniques sur plusieurs colonnes d'une table de base de données ?

Comment puis-je compter efficacement les combinaisons uniques sur plusieurs colonnes d'une table de base de données ?

Mary-Kate Olsen
Libérer: 2025-01-05 21:48:40
original
590 Les gens l'ont consulté

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

Comptage des valeurs uniques sur plusieurs colonnes : alternatives aux sous-requêtes

Lorsque vous êtes confronté à la tâche de compter les valeurs uniques d'une table basée sur plusieurs colonnes, telles que DocumentId et DocumentSessionId , la tendance naturelle est d’utiliser une approche de sous-requête. Cependant, cela peut soulever des problèmes d'optimisation des performances.

Une alternative à l'utilisation d'une sous-requête consiste à créer une colonne calculée persistante. Ceci peut être réalisé en hachant ou en concaténant les colonnes souhaitées, garantissant un résultat déterministe qui peut être indexé et sur lequel des statistiques sont construites.

Par exemple, si les colonnes en question sont DocumentId et DocumentSessionId, une colonne calculée nommée HashValue peut être créé à l'aide d'une fonction de hachage telle que SHA1 ou MD5 :

ALTER TABLE DocumentOutputItems ADD COLUMN HashValue AS SHA1(DocumentId + DocumentSessionId);
Copier après la connexion

Une fois la colonne calculée persistant et indexé, un décompte distinct sur cette colonne sera équivalent au résultat souhaité :

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

En utilisant une colonne calculée persistante, vous pouvez tirer parti de l'indexation et des statistiques pour améliorer les performances, éliminant ainsi le besoin d'une sous-requête .

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal