赞
踩
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 时,建议使用复制代码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。