分享经验
以前的技术活都是有个师傅一把手教导,现在技术活只能靠自己去学习。我作为程序员,要把握两点,一是市场,二是实战技术。市场作为导向,而实战技术才是技术人员最大的财富。我经常会去看行业的招聘信息。因为那里可以看到市场需要技术人员的技术要达到什么程度,懂得什么技术。如果你懂了完全可以胜任,如果招聘信息上,你看不懂的技术,正是你要需要弥补的知识。
MySQL优化要从数据库设计、查询、索引、存储、搜索等方面优化考虑。
优化的思路:不查->少查->内存查->磁盘查->用索引->少排序
从设计上优化
1、遵从三范式建立数据表,分清楚实体,实体之间的关系,什么时候用外键,分表。
2、表优化,遵循以下原则
- 定长变长分离
定长指字段的字节不会变的字段一张表,变长指字段的字节会变多变少的一张表。例如,uid ,name,email 一张表,description 一张表,通过uid链表查询。 - 常用字段和不常用的字段要分离(有点难度)
需要结合网站具体业务来分析,分析字段的查询场景,查询频率低的字段,单拆出来。例如:列表页上是页面常用信息一个表,点击进去详细页的一个表。 - 在1对多,需要关联统计的字段上,添加冗余字段
例如:每个文章类发布多了多少篇。这个时候直接在文章类后面加上统计字段,每次增加一篇文章或者减少一篇文章直接操作字段,而不是文章的数据表中查询统计多少篇。
3、字段优化 - 字段类型优先级:整型>data,time>enum,char>varchar>blob,text 。
- 字段的字节够用就行。
- 尽量避免用null()。
从索引上优化
-
表中有两个索引