SQL(N)[MySQL-表结构设计]

1.为什么要尽量设定一个主键?

主键是数据库确保数据行在整张表唯一性的保障,即使业务上本张表没有主键,也建议添加一个自增长的ID类作为主键。设定了主键之后,在后续的删除、修改、查询的时候可以更加快速,并能确保操作数据范围安全。

2.主键使用自增ID还是UUID?

推荐使用自增ID,不要使用UUID。
因为在MySQL的默认存储引擎InnoDB中,主键索引是作为聚簇索引存在的,也就是说,主键索引的B+树叶子节点上存储了主键索引以及全部的数据(暗转顺序存储),如果主键索引是自增ID,那么只需要不断向后排列即可。如果是UUID,由于到来的ID与原来的大小不确定,会造成非常多的数据插入、数据移动,然后导致产生很多的内存碎片,进而造成插入性能的下降。
总之,在数据量大的情况下,用自增主键的性能会比UUID的性能好。
补充知识点:主键是聚簇索引:如果没有主键,InnoDB会选择一个唯一键来作为聚簇索引,如果没有唯一键,会生成一个隐式的主键。

3.字段为什么要求定义为not null?

null值会占用更多的字节,且会在程序中造成很多与预期不符的情况。

4.如果要存储用户的密码散列,应该使用什么字段进行存储?

密码散列,盐,用户身份证号等固定长度的字符串应该使用char,而不是varchar来存储,这样可以节省空间且提高检索效率。

发布了48 篇原创文章 · 获赞 14 · 访问量 4153

猜你喜欢

转载自blog.csdn.net/weixin_42366378/article/details/98535018