Per SQL Server:fino a 8 colonne di tipo BIT
può essere memorizzato all'interno di un singolo byte, mentre ogni colonna di tipo CHAR(1)
occuperà un byte.
D'altra parte:un BIT
la colonna può avere due valori (0 =false, 1 =true) o nessun valore (NULL) - mentre un CHAR(1)
può avere qualsiasi valore di carattere (molte più possibilità)
Quindi, in realtà, si riduce a:
- hai davvero bisogno di un campo vero/falso (sì/no)? Se sì:usa
BIT
- hai bisogno di qualcosa con più di due valori possibili? usa
CHAR(1)
Non penso che faccia alcuna differenza significativa, dal punto di vista delle prestazioni, a meno che tu non abbia decine di migliaia di colonne. Poi, ovviamente, usando BIT
che può memorizzare fino a 8 colonne in un singolo byte sarebbe vantaggioso. Ma ancora:per il tuo caso di database "normale", dove hai poche, una dozzina di quelle colonne, non fa davvero una grande differenza. Scegli il tipo di colonna che si adatta alle tue esigenze - non preoccuparti troppo delle prestazioni.....