Нульовий простір для помилкового
Незалежно від вашого вибору, ви можете встановити NULL
замість цього, 0
і це не займе зайвого місця (оскільки база даних майже завжди має NULL
прапор для кожного поля кожного рядка, просто сидячи там; більше інформації тут ). Якщо ви також переконаєтесь, що значення за замовчуванням / найімовірніше false
, ви заощадите ще більше місця!
Дещо простору для правди
Значення для представлення true
вимагає простору, визначеного типом поля; Використання BIT
дозволить заощадити місце, лише якщо таблиця має кілька таких стовпців, оскільки вона використовує один байт на 8 полів (на відміну від того, TINYINT
який використовує один байт на поле).
TINYINT
має ту перевагу, що дозволяє налаштувати 8- значну бітову маску не турбуючись про керування купу додаткових стовпців, а пошук теоретично швидший (одне ціле поле проти кількох бітових полів). Але є деякі недоліки, такі як повільніше впорядкування, вишукані матеріали для перехресного індексування та відсутність назв полів. Що для мене найбільша втрата; вашій базі даних знадобиться зовнішня документація, щоб зазначити, які біти що робили в яких бітових масках.
У будь-якому випадку уникайте спокуси використовувати TEXT
поля для зберігання логічних чи наборів з них. Пошук тексту - це набагато більше роботи для сервера, і довільні схеми імен, такі як "увімкнути, вимкнути, вимкнути", можуть зашкодити сумісності.