Tôi gọi cột là "giới tính".
Data Type Bytes Taken Number/Range of Values
------------------------------------------------
TinyINT 1 255 (zero to 255)
INT 4 - 2,147,483,648 to 2,147,483,647
BIT 1 (2 if 9+ columns) 2 (0 and 1)
CHAR(1) 1 26 if case insensitive, 52 otherwise
Các BIT kiểu dữ liệu có thể được loại trừ bởi vì nó chỉ hỗ trợ hai giới tính có thể đó là không đủ. Mặc dù INT hỗ trợ nhiều hơn hai tùy chọn, phải mất 4 byte - hiệu suất sẽ tốt hơn với kiểu dữ liệu nhỏ hơn / hẹp hơn.
CHAR(1)
có lợi thế hơn TinyINT - cả hai đều có cùng số byte, nhưng CHAR cung cấp số lượng giá trị hẹp hơn. Việc sử dụng CHAR(1)
sẽ làm cho việc sử dụng các khóa tự nhiên "m", "f", v.v ... so với việc sử dụng dữ liệu số được gọi là khóa thay thế / khóa nhân tạo. CHAR(1)
cũng được hỗ trợ trên bất kỳ cơ sở dữ liệu nào, nếu cần phải chuyển.
Phần kết luận
Tôi sẽ sử dụng Tùy chọn 2: CHAR (1).
Phụ lục
Một chỉ mục trên cột giới có thể sẽ không giúp ích vì không có giá trị trong một chỉ mục trên cột có số lượng thẻ thấp. Có nghĩa là, không có đủ sự đa dạng trong các giá trị để chỉ mục cung cấp bất kỳ giá trị nào.