2011-12-29 2 views
7

При рассмотрении только два возможных значения 0 & 1 или Правда & Ложные, то вполне очевидно, что BIT (1) делает лучшую работу:Почему MySQL интерпретирует Boolean как TINYINT (1) вместо BIT (1)?

  • BIT (1) силы только 2 возможных значения: 0 и 1 , тогда как TINYINT (1) может принимать любые целочисленные значения менее 10 (0,1,2,3,4,5 ....), которые могут быть неоднозначными.
  • Несколько столбцов BIT (1) можно объединить в байты, чтобы они требовали меньше места, чем несколько столбцов TINYINT (1).

Почему MySQL интерпретирует Boolean как TINYINT (1), но не BIT (1)? Есть ли преимущество использования TINYINT (1) над BIT (1) при обработке логических значений?

ответ

5

Это зависит от версии и двигатель базы данных и драйвера

  • BIT правильно поддерживается в 5.05+ с MyISAM и InnoDB
  • Некоторые драйверы JDBC должны быть сказали это (например, в комплекте драйвер чайника)

Но BIT предпочтительнее, чем TINYINT.
Это просто наследие и инерция, которая держит TINYINT ...

+0

+1 Для инерции. Я по-прежнему использую 'TINYINT (1)' почти во всех обстоятельствах без уважительной причины. –

+0

+1 для инерции тоже. Я все еще использую TINYINT (1), потому что мой любимый редактор SQL не позволяет выпускать данные BIT так же просто, как для TINYINT ... и в некоторых случаях это может сэкономить много времени. – Donatello

Смежные вопросы