mysql建表注意事项
- 注意选择存储引擎,如果要支持事务要选择InnoDB
- 注意字段的类型选择,日期类型如果要记录时分秒要选择datetime,只记录年月日使用date类型即可;对于字符串类型,varchar比char更节省空间但是速度没有char快;对于内容介绍类的长广文本字段使用text或longtext;如果存储图片等二进制数据使用blob或者longblob;对于金额字段建议使用Decimal;对于数值类型的字段确保取值范围足够的前提下尽量使用占用空间类型较小的类型;
- 主键建议使用自然主键,不要有业务意义,建议使用int unsigned类型,特殊类型使用bigint
- 如果存储text,blog字段建议单独列出一张表,使用外键关联
- 尽量不要定义外键,保证表的独立性,可以存在外键意义的字段
- 设置字段默认值,比如:状态、创建时间等
- 每个字段写清楚注释
- 注意字段的约束,比如:非空、唯一、主键
存储引擎及区别
- mysql常见的存储引擎及区别?
一、InnoDB
支持事务,使用的锁力度默认为行级锁,可以支持更高的并发也支持表锁;支持外键约束;外键约束其实增加了表的查询速度,增加了表之间的耦合度
二、MyISAM
不提供事务支持、只支持表级锁、不支持外键
三、memory
数据存储在内存中
总结:
- MyISAM管理非事务表,提供高速存储和检索以及全文搜索能力,如果在应用中大量的select操作,应该选择MyISAM
- InnoDB用于事务处理,具有ACID事务支持等特性,如果在应用中有大量的insert和update操作,应该选择InnoDB