Je pense que si votre champ booléen est tel que vous vous y référeriez dans de nombreux cas, il serait logique d'avoir une table séparée, par exemple DeletedPages, ou SpecialPages, qui auront de nombreux champs de type booléen, tels que is_deleted
, is_hidden
, is_really_deleted
, requires_higher_user
etc, et ensuite vous feriez des jointures pour les obtenir.
Typiquement, la taille de cette table serait plus petite et vous obtiendriez un avantage en faisant des jointures, surtout en ce qui concerne la lisibilité et la maintenabilité du code. Et pour ce type de requête :
sélectionnez toutes les pages où is_deleted = 1
Il serait plus rapide de l'implémenter comme ceci :
sélectionnez toutes les pages où les pages
font une jointure avec DeletedPages sur page.id=deleted_pages.page_id
Je pense avoir lu quelque part à propos des bases de données mysql qu'il faut qu'un champ ait une cardinalité d'au moins 3 pour que l'indexation fonctionne sur ce champ, mais veuillez confirmer cela.
0 votes
Possible duplicate de Y a-t-il un gain de performance à indexer un champ booléen?
32 votes
@AmirAliAkbari: Oh! Non! Une référence circulaire! Espérons que S.O. n'explosera pas!
2 votes
ATTENDS! Celui-ci existait en premier! L'autre a été créé après, ce qui signifie que celui-ci n'est PAS un doublon. S.O. est sauvé!