2011-12-29 16 views
7

Rozpatrując tylko dwie możliwe wartości, 0 & 1 lub Prawda & fałszywe, to jest oczywiste, że BIT (1) ma lepszą pracę:Dlaczego MySQL interpretuje wartość logiczną jako TINYINT (1) zamiast BIT (1)?

  • bit (1) wymusza tylko 2 możliwe wartości: 0 i 1 , natomiast TINYINT (1) może przyjmować dowolne liczby całkowite mniejsze niż 10 (0,1,2,3,4,5 ...), które mogą być niejednoznaczne.
  • Wiele kolumn BIT (1) można połączyć w bajty, aby zajmowały mniej miejsca niż kilka kolumn TINYINT (1).

Dlaczego MySQL interpretuje wartość logiczną jako TINYINT (1), ale nie BIT (1)? Czy jest jakaś korzyść z używania TINYINT (1) nad BIT (1) w obsłudze wartości logicznych?

Odpowiedz

5

To zależy od wersji i silnika bazy danych i sterownika

  • BIT jest obsługiwany prawidłowo 5.05+ z MyISAM i InnoDB
  • Niektóre sterowniki JDBC muszą być poinformowani, to (np dołączonego sterownika czajnik'S)

Ale BIT jest lepszy od TINYINT oczywiście.
To tylko dziedzictwo i bezwładność utrzymują TINYINT ...

+0

+1 Dla bezwładności. Nadal używam 'TINYINT (1)' w prawie wszystkich okolicznościach bez żadnego powodu. –

+0

+1 również za bezwładność. Nadal używam TINYINT (1), ponieważ mój ulubiony edytor SQL nie zezwala na edycję danych BIT tak prostych jak dla TINYINT ... i może zaoszczędzić sporo czasu w niektórych przypadkach. – Donatello

Powiązane problemy