0

一直以来,都是用1和2来记录,男或女。
最近发现一种记录方式,就是用M和F,来代替男和女。

这样记录,明显比1和2,更加直观。


但是,如果从数据库角度来看,int类型的1和2,是否比char类型的M和F,性能更加高,在用索引的情况下?


另外,听说facebook的性别字段,提供了20多个选择,如果是用M和F,这种单个英文来记录,估计也不合适。

大佬们有什么见解?

2019-10-09 提问
6 个回答
2

不建议使用数据库 枚举 。既然题目没有标榜是什么数据库,那就以 MySQL 来说 Enum 是一个非常奇葩的存在, 关于 MySQL 枚举坑移步下方[1]。

其次,也不应该使用 int ,在数据库设计原则中,应当以节约为主,除开 int 还有 tinyint 可选。无符号的 tinyint ,存储范围为 0~255 ,总共 256 个数字已经应对绝大部分 类枚举 场景。

至于 Char 还是 tinyint 就是你自己的选择了,当然我更善于在业务中使用 tinyint 。

2

tinyint
用数字,字符串会有字符集校对过程,肯定比数字要慢
另外也不建议用enum,如果你需要加一个值,比如未知(也就是没选性别),那你改数据库结构会导致锁表

0

其实不要太纠结这个,做好枚举就好了,扩展会更好

0

性别这个,没有必要纠结用数字还是字母,意义不大。你用M F,只是见名知意,用数字,更节省空间而已。
另外,对这种字段来说,建索引是没有意义的,尤其是列值单一情况。

0

性别的发展速度远快过数据库的
所以还是int算了

0

我的做法是数据库用int标注性别,然后在后端获取数据时利用自定义映射类将数字映射成具体的性别

撰写答案

推广链接