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

本文探讨了数据库设计中的关键概念,包括主键的作用、自增ID与UUID的性能对比、NOT NULL约束的重要性以及密码散列存储的最佳实践。通过理解这些原则,可以提升数据一致性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值