当前位置:   article > 正文

mysql建表是要注意什么问题_MySQL建表注意事项

mysql建表时候的注意事项

1.建表规范

-- 数据库名丶表名,全部使用小写字母,使用"_"下划线连接且长度小于12,做到见名知意

2.建议使用 innodb 引擎,这也是MySQL的默认引擎

3.字段类型选择

-- 建议所有的表都有一个自增id ,可以经常作为主键

-- 存储非负数用 unsigned,因为对于同样的字节数,存储范围更大

-- 整型定义中不加长度,直接使用 int, 而不是 in(n).

-- 字符集选择 utf-8

-- timestamp和datetime都是精确到毫秒,优先选择timestamp,因为前者只占用4个字节,而后者占用8个字节

-- 如果可以,所有字段最好都用 not null, 因为 null 字段被索引,需要额外的 1个字节;使索引丶索引统计丶值的比较变得更加复杂.如果是索引字段,一定要定义为 not null , null值 可用 '0'来代替.

4.建立索引注意事项

--索引名称必须使用小写

--单张表的索引数量控制在5个以内,因为 innoDB使用b+tree(B+树结构)存储,在update丶delete丶insert时需要对 b+tree进行调整,过多的索引会减慢更新的速度

-- 唯一索引不和主键重复

-- 经常作为 where 条件的字段最好添加索引

5.SQL语句的使用

--select语句只获取需要的字段,不使用 select *这种写法,这样会查询所有的字段where条件中的非等值条件(in丶between丶丶<=丶>=)会导致后面的条件使用不了索引, 从而减慢查询速度

-- 避免在slq语句进行数学运算或者函数运算,容易将业务逻辑和 db耦合在一起

-- 统计表中记录数时使用 count(),而不是count(primary_key)和count(1)

---- 表名称:

--- 项目启动建立数据库表时,需要有一定的规范来约定好如何去建立表名,例如:

-- 表名都是 test_表名 等等

---- 表备注:

--- 在数据库创建对应的表时,最好是为表带上一个对应功能的表备注,方便后期查找表时, 能直接显示看到该表是为了什么功能才建立的,如上图的表备注就是 车辆

6.建表引擎比较:

--- 一般来说MySQL建表时,如果不做特殊的规定,默认的表引擎为 InnoDB,因为该引擎对于事务的支持更高一些.

--- 常见的MySQL建表引擎有:

engine=innodb

-- 这是MySQL的默认引擎

-- 提供了事务控制功能,来确保一组命令全部执行成功.

-- 不保存表的具体行数,每次执行 select count(*) from时,都需要扫描一遍整个表来计算有多少行, 当 count(*)语句包含where时,和myisqm引擎的操作是一样的

-- 默认每执行一次insert时,都会commit一次,所以导致插入数据慢,但是安全

-- 执行大量 insert 和 update时建议使用,安全性能更高

-- delete from table,删除表数据时,会一行行的删除数据,不会重新建表

engine=myisqm

-- 建表时需要特殊规定出来,才会用该引擎建表

-- 不支持事务,不能够容错,如果硬盘挂了数据就没了

-- 插入数据时更加快速,因为没有事务支持.

-- 执行大量 select 时,建议使用复制代码

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/591316
推荐阅读
相关标签
  

闽ICP备14008679号