MySQL阶段性学习总结
数据库设计规范
- 首先要熟悉所在公司的数据库设计规范。
- 所有数据库对象名称必须使用小写字母并用下划线分开,因为mysql数据库对大小写敏感。
- 所有数据库的名称禁止使用mysql保留关键字.
- mysql的命名要做到见名识义,并且最好不要超过32个字符。
- 所有表必须使用Innodb存储引擎,因为其支持事物,还有行级锁,更好的恢复性,高并发下的性能更加好。
- 数据库和表的字符统一使用UTF-8.一个汉字对应三个字节,而一个英文字符占用一个字节。
- 所有的表和字段必须加注释,便于开发人员理解和其他人员的维护。
- 谨慎使用分区表,分区表在物理上表现为多个文件,在逻辑上表现为一个表。
- 尽量做到冷热数据(常用和不常用的数据)分离,减小表的宽度。
- 禁止在数据库中存储图片和文件等二进制数据。
- 索引对数据库的查询性能非常重要,但是滥用会影响mysql的跟新和删除性能和效率。
- 数据库字段设计时,优先选择符合储存需要的最小数据类型。尽量避免使用TEXT,BLOB,EMUM数据类型。
- 存储同财务相关的金额数据时,必须使用decimal数据类型,因为decimal为精准浮点型,在计算时不会存在数据丢失。
SQL开发规范
- 建议使用预编译语句进行数据库操作。
- 避免数据类型的隐式转换。
- 禁止使用select * 及没有字段列表的insert操作
- 优先利用表中已存在的索引进行操作。
- 超过100万行的数据进行写操作时,要分批多次进行操作。
数据库的设计范式
- 数据库设计最低要满足第三范式(设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF)的要求
- 有时候,有些规范设计也不必全都遵守,因为全的遵守有时也会影响数据库的性能,视具体情况而定。
其他
- 对查出的数据进行分页展示 可在where条件后面加上limit(n,m),n代表展示第几页的数据而m代表每页展示多少条数据。
- 对所写的SQL进行执行计划分析,及是否用到索引可用EXPLAIN语句。如;
EXPLAIN select name,age from user where age>10 limit 0,10
- 执行计划(EXPLAIN)能告诉我们什么?1:SQL如何使用索引。2:连接查询的执行顺序。3:查询扫面的数据行数
- 无论在任何时候,在删除数据一些比较特殊的数据前,记得备份一份。
- 如何捕获有问题的SQL,可启用mysql慢查询日志