概述
SQL-MySQL-表结构设计
- 1.为什么要尽量设定一个主键?
- 2.主键使用自增ID还是UUID?
- 3.字段为什么要求定义为not null?
- 4.如果要存储用户的密码散列,应该使用什么字段进行存储?
1.为什么要尽量设定一个主键?
主键是数据库确保数据行在整张表唯一性的保障,即使业务上本张表没有主键,也建议添加一个自增长的ID类作为主键。设定了主键之后,在后续的删除、修改、查询的时候可以更加快速,并能确保操作数据范围安全。
2.主键使用自增ID还是UUID?
推荐使用自增ID,不要使用UUID。
因为在MySQL的默认存储引擎InnoDB中,主键索引是作为聚簇索引存在的,也就是说,主键索引的B+树叶子节点上存储了主键索引以及全部的数据(暗转顺序存储),如果主键索引是自增ID,那么只需要不断向后排列即可。如果是UUID,由于到来的ID与原来的大小不确定,会造成非常多的数据插入、数据移动,然后导致产生很多的内存碎片,进而造成插入性能的下降。
总之,在数据量大的情况下,用自增主键的性能会比UUID的性能好。
补充知识点:主键是聚簇索引:如果没有主键,InnoDB会选择一个唯一键来作为聚簇索引,如果没有唯一键,会生成一个隐式的主键。
3.字段为什么要求定义为not null?
null值会占用更多的字节,且会在程序中造成很多与预期不符的情况。
4.如果要存储用户的密码散列,应该使用什么字段进行存储?
密码散列,盐,用户身份证号等固定长度的字符串应该使用char,而不是varchar来存储,这样可以节省空间且提高检索效率。
最后
以上就是悦耳乌冬面为你收集整理的SQL(N)[MySQL-表结构设计]1.为什么要尽量设定一个主键?2.主键使用自增ID还是UUID?3.字段为什么要求定义为not null?4.如果要存储用户的密码散列,应该使用什么字段进行存储?的全部内容,希望文章能够帮你解决SQL(N)[MySQL-表结构设计]1.为什么要尽量设定一个主键?2.主键使用自增ID还是UUID?3.字段为什么要求定义为not null?4.如果要存储用户的密码散列,应该使用什么字段进行存储?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复