2011-12-29 19 views
7

Khi xem xét chỉ có hai giá trị 0 & 1 hoặc True & False, nó là khá rõ ràng rằng BIT (1) làm một công việc tốt hơn:Tại sao MySQL giải thích Boolean là TINYINT (1) thay vì BIT (1)?

  • BIT (1) lực lượng chỉ có 2 giá trị có thể: 0 và 1 , trong khi TINYINT (1) có thể chấp nhận bất kỳ giá trị số nguyên nhỏ hơn 10 (0,1,2,3,4,5 ....) có thể mơ hồ.
  • Nhiều cột BIT (1) có thể được kết hợp thành byte để chúng yêu cầu ít không gian hơn nhiều cột TINYINT (1) làm.

Vậy tại sao MySQL giải thích Boolean là TINYINT (1) chứ không phải BIT (1)? Có lợi thế nào khi sử dụng TINYINT (1) trên BIT (1) trong việc xử lý các giá trị boolean không?

Trả lời

5

Nó phụ thuộc vào phiên bản và cơ sở dữ liệu và điều khiển

  • BIT được hỗ trợ đúng cách trong 5.05+ với MyISAM và InnoDB
  • Một số trình điều khiển JDBC cần phải được thông báo này (ví dụ tài xế kèm Ấm của)

Nhưng BIT thích hợp hơn với TINYINT.
Chỉ là di sản và quán tính giữ TINYINT ...

+0

+1 Đối với quán tính. Tôi vẫn sử dụng 'TINYINT (1)' trong hầu như tất cả các trường hợp không có lý do chính đáng. –

+0

+1 cho quán tính. Tôi vẫn sử dụng TINYINT (1) vì trình soạn thảo SQL yêu thích của tôi không cho phép ấn bản dữ liệu BIT đơn giản như cho TINYINT ... và nó có thể tiết kiệm rất nhiều thời gian trong một số trường hợp. – Donatello

Các vấn đề liên quan