Zero miejsca na fałsz
Cokolwiek wybierzesz, możesz ustawić NULL
zamiast 0
i nie zajmie to dodatkowego miejsca (ponieważ baza danych prawie zawsze ma NULL
flagę dla każdego pola w każdym wierszu, po prostu tam siedzi; więcej informacji tutaj ). Jeśli również upewnisz się, że domyślną / najbardziej prawdopodobną wartością jest false
, zaoszczędzisz jeszcze więcej miejsca!
Trochę miejsca na prawdę
Wartość do przedstawienia true
wymaga przestrzeni zdefiniowanej przez typ pola; użycie BIT
pozwoli zaoszczędzić miejsce tylko wtedy, gdy tabela ma wiele takich kolumn, ponieważ wykorzystuje jeden bajt na 8 pól (w przeciwieństwie do tego, TINYINT
który wykorzystuje jeden bajt na pole).
TINYINT
ma tę zaletę, że pozwala dostosować 8-wartościową maskę bitową bez martwienia się o zarządzanie kilkoma dodatkowymi kolumnami, a wyszukiwanie jest teoretycznie szybsze (pojedyncze pole liczb całkowitych w porównaniu z kilkoma polami bitowymi). Ale są pewne wady, takie jak wolniejsze porządkowanie, fantazyjne indeksowanie krzyżowe i brak nazw pól. Która dla mnie jest największą stratą; Twoja baza danych wymagałaby zewnętrznej dokumentacji, aby odnotować, które bity robią co w których maskach bitowych.
W każdym razie unikaj pokusy używania TEXT
pól do przechowywania wartości logicznych lub ich zbiorów. Przeszukiwanie tekstu wymaga dużo więcej pracy dla serwera, a dowolne schematy nazewnictwa, takie jak „włącz, wyłącz, wyłącz” mogą zaszkodzić interoperacyjności.