Maison  >  Article  >  base de données  >  Faut-il indexer les champs booléens ? Quand est-ce que cela fait une différence ?

Faut-il indexer les champs booléens ? Quand est-ce que cela fait une différence ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-27 08:44:30141parcourir

 Should You Index Boolean Fields? When Does It Make a Difference?

Indexation des champs booléens pour des performances améliorées

Les requêtes impliquent souvent de filtrer les données en fonction de champs booléens. Étant donné que les champs booléens sont généralement stockés sous la forme d’un seul bit ou octet, il est généralement admis que leur indexation apporterait un gain de performances négligeable. Cependant, dans certains scénarios, l'indexation des champs booléens peut améliorer considérablement l'efficacité des requêtes.

Lorsque l'indexation d'un champ booléen améliore les performances

L'indexation d'un champ booléen est bénéfique lorsque :

  • La distribution des données est très asymétrique : Si la majorité des lignes ont la même valeur booléenne (par exemple, la plupart des lignes ont isok=0), un index peut accélérer les requêtes en éliminant le besoin pour analyser un grand nombre de lignes.
  • La sélectivité des requêtes est faible : Les requêtes qui récupèrent un petit pourcentage de la table (par exemple, WHERE isok=1) bénéficient des index booléens. L'index optimise l'accès aux données, permettant au moteur (tel qu'InnoDB) d'identifier efficacement les lignes correspondantes.

Preuve tirée d'un exemple concret

Un utilisateur a signalé avoir constaté une amélioration significative des performances en indexant un champ booléen. Dans leur cas, une table de 4 millions de lignes contenait environ 1 000 lignes avec l'indicateur booléen défini. L'exécution de la requête avec WHERE isok=1 a pris plus de 9 secondes. Après avoir ajouté un index sur le champ booléen, le temps de requête est réduit à une fraction de seconde.

Conclusion

Bien que l'indexation des champs booléens ne soit généralement pas recommandée, il existe scénarios spécifiques dans lesquels il peut améliorer les performances des requêtes. Lorsque la distribution des données est asymétrique ou que la sélectivité des requêtes est faible, l'indexation d'un champ booléen peut entraîner une amélioration considérable du temps d'exécution des requêtes.

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!

Déclaration:
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