Đối với SQL Server:tối đa 8 cột thuộc loại BIT
có thể được lưu trữ bên trong một byte đơn, trong khi mỗi cột thuộc loại CHAR(1)
sẽ chiếm một byte.
Mặt khác:một BIT
cột có thể có hai giá trị (0 =false, 1 =true) hoặc không có giá trị nào (NULL) - trong khi một CHAR(1)
có thể có bất kỳ giá trị ký tự nào (nhiều khả năng hơn)
Vì vậy, thực sự, nó đi xuống:
- bạn có thực sự cần trường true / false (yes / no) không? Nếu vậy:sử dụng
BIT
- bạn có cần thứ gì đó có nhiều hơn hai giá trị có thể không - hãy sử dụng
CHAR(1)
Tôi không nghĩ rằng nó tạo ra bất kỳ sự khác biệt đáng kể nào, từ quan điểm hiệu suất - trừ khi bạn có hàng chục nghìn cột. Sau đó, tất nhiên, sử dụng BIT
có thể lưu trữ tối đa 8 cột trong một byte duy nhất sẽ có lợi. Nhưng một lần nữa:đối với trường hợp cơ sở dữ liệu "bình thường" của bạn, nơi bạn có một vài, một chục cột như vậy, nó thực sự không tạo ra sự khác biệt lớn. Chọn loại cột phù hợp với nhu cầu của bạn - đừng quá lo lắng về hiệu suất .....