2010-08-19 4 views
2

J'utilise divers drapeaux booléens dans mes tables, et à la lecture d'un peu d'optimisation des performances, je suis tombé sur un conseil répandu pour éviter d'utiliser des drapeaux booléens.Des alternatives aux drapeaux booléens dans les tables MySQL?

Quelles sont les alternatives efficaces? Quelques exemples seraient très appréciés.

+0

Pourriez-vous publier un lien vers une ressource qui déconseille l'utilisation de champs booléens? – Quassnoi

Répondre

4

J'utilise divers indicateurs booléens dans mes tableaux, et de lire un peu plus sur l'optimisation des performances je suis tombé sur une pointe généralisée pour éviter d'utiliser des drapeaux booléens.

En MySQL, BOOLEAN est juste un alias pour TINYINT(1).

Cela signifie que les opérations booléennes sont en fait des opérations entières.

qui, entre autres choses, signifie que dans une requête comme ceci:

SELECT * 
FROM mytable 
WHERE boolean_flag = 0 

un index sur boolean_flag, le cas échéant, peut être utilisé, alors que dans celui-ci:

SELECT * 
FROM mytable 
WHERE NOT boolean_flag 

la l'index ne sera pas utilisé.

2

si vous avez beaucoup de fieds booléennes, vous pouvez utiliser bit

comme

au lieu de quatre champs « vrai, faux, faux, vrai » magasin un numéro « 9 » (1001 en binaire)

Questions connexes