如何设计MySQL数据库表以实现最佳性能和数据完整性?

MySQL数据库表设计涉及创建表格结构,包括字段名称、数据类型、约束和索引等。

MySQL数据库设计表_表设计

如何设计MySQL数据库表以实现最佳性能和数据完整性?

详细准确回答,使用小标题和单元表格

1、命名规范

数据库表名、字段名、索引名等需要命名规范,可读性高,一般要求用英文,禁止使用拼音和英文缩写,主键索引名为pk_字段名;唯一索引名为uk_字段名;普通索引名为idx_字段名。

2、选择合适的字段类型

数字类型从tinyint、smallint、int、bigint依次选择,小数类型如金额,则选择decimal,避免使用float和double,字符串长度几乎相等时,使用char定长字符串类型,varchar是可变长字符串,不预先分配存储空间,长度不要超过5000,如果存储的值太大,建议字段类型修改为text,同时抽出单独一张表,用主键与之对应,同一表中,所有varchar字段的长度加起来,不能大于65535,如果有此需求,请使用TEXT/LONGTEXT类型。

3、主键设计要合理

主键设计的话,最好不要与业务逻辑有所关联,有些业务上的字段,比如身份证,虽然是唯一的,一些开发者喜欢用它来做主键,但是不是很建议哈,主键最好是毫无意义的一串独立不重复的数字,比如UUID,又或者Auto_increment自增的主键,或者是雪花算法生成的主键等等。

如何设计MySQL数据库表以实现最佳性能和数据完整性?

4、选择合适的字段长度

varchar和char类型表示字符长度,其他类型表示字节长度,设计表时需充分考虑字段长度,如用户名字段(长度5~20个字符),建议设置为username varchar(32),字段长度一般设置为2的幂(即2的n次方)。

5、优先考虑逻辑删除,而不是物理删除

物理删除会释放存储空间,但恢复数据困难且使自增主键不再连续,逻辑删除通过添加is_deleted字段标记数据已删除,推荐逻辑删除,因为它更适合状态变更,不会破坏数据的完整性。

6、每个表都需要添加这几个通用字段

表必备字段包括:id(主键)、create_time(创建时间)、modifed_time(修改时间),非必须字段有version(用于乐观锁)、remark(备注)、modified_by(修改人)、creator(创建人)。

7、一张表的字段不宜过多

如何设计MySQL数据库表以实现最佳性能和数据完整性?

建表时,一张表的字段不宜过多,一般尽量不要超过20个字段,如果一张表的字段过多,表中保存的数据可能就会很大,查询效率就会很低,一张表不要设计太多字段哈,如果业务需求,实在需要很多字段,可以把一张大的表,拆成多张小的表,它们的主键相同即可,当表的字段数非常多时,可以将表分成两张表,一张作为条件查询表,一张作为详细内容表 (主要是为了性能考虑)。

8、尽可能使用not null定义字段

如果没有特殊的理由,一般都建议将字段定义为 NOT NULL,为什么呢?NOT NULL可以防止出现空指针问题,NULL值存储也需要额外的空间的,它也会导致比较运算更为复杂,使优化器难以优化SQL,NULL值有可能会导致索引失效,如果将字段默认设置成一个空字符串或常量值并没有什么不同,且都不会影响到应用逻辑,那就可以将这个字段设置为NOT NULL。

9、设计表时,评估哪些字段需要加索引

评估你的表数据量,如果你的表数据量只有一百几十行,就没有必要加索引,否则设计表的时候,如果有查询条件的字段,一般就需要建立索引,但是索引也不能滥用:索引也不要建得太多,一般单表索引个数不要超过5个,因为创建过多的索引,会降低写得速度,区分度不高的字段,不能加索引,如性别等,索引创建完后,还是要注意避免索引失效的情况,如使用mysql的内置函数,会导致索引失效的,索引过多的话,可以通过联合索引的方式优化,然后的话,索引还有一些规则,如覆盖索引,最左匹配原则等等,假设你新建一张用户表,如下:

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1250421.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希新媒体运营
上一篇 2024-10-29 07:13
下一篇 2024-10-29 07:20

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入