由浅入深Mysql优化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由浅入深Mysql优化相关的知识,希望对你有一定的参考价值。
选mysql优化作为我的第一篇博文,实在是因为这个东西很有意思,也是能体现后端开发人员设计细节及逻辑分析的一个知识点。
那么来吧:
作为Mysql优化,很多人大概能跟着感觉说出如下 : (1)常用与不常用分离,(2)给每个字段尽量少的空间。(3)在合适的字段加索引。然后就没有然后了。
这三条都是正确的,我们先说前两条,并在前两条的基础上进行补充,关于索引,我们在后面会有一个非常大大大的章节去讲:
(1)常用和不常用分离,能减轻数据库的访问压力 (2)给每个字段尽量少的空间,这样访问的速度会更快
另外:(3)定长与变长分离,例如 一个数据库有 10行,如果每个字段的长度都是固定的,那么每行的长度也是固定的,假设为100字节,那么我们找第九行的时候,只需要 100*9+1,直接到901个字节去找,就能找到;而如果有变长的字段,那么每一行的长度都是不固定的,找起来就要一行行去找了。
(4)在需要关联统计的字段上,添加冗余字段。这句话听起来很难懂,那么,我来设定一个场景,比如有10个选手,然后需要评出一个通过点赞数评出一个获奖者。
那么,就需要一个表dianzan记录点赞,大致字段为: 选手id 点赞 时间
1 1
2 1
当统计1号选手 点赞数时候,就要从点赞表中统计 select count(*) from dianzan where id = 1;
那么,我们何不在选手表中添加一个字段,dianzan ,每当有人点赞,就把这个数+1,虽然多了一个字段,看似冗余浪费了空间,实则在查询的时候会更方便。
以上是关于由浅入深Mysql优化的主要内容,如果未能解决你的问题,请参考以下文章
MySQL数据库性能优化由浅入深(表设计慢查询SQL索引优化Explain分析Show Profile分析配置优化)