一、其实对于MySQL优化在初期需求分析和表设计的时候就已经开始了,首先要保证单条数据大小的控制,因为MySQL底层是16kb大小的内存页,如果单条数据大小是16kb,那么一个内存页就只能保存一条数据,这基本是白费劲,如果单条数据大小是1kb,那一个内存页可以存储16个数据,为什么要提到内存页呢,因为一个内存页也就是我们所说的一次IO,一次IO读取一个内存页。那么如何保证单条数据量的大小呢,比如我们要存储一个UUID,这个UUID是32位的,此时我们就要把它定死为32位,如果需要容错,可以扩展到33、34位,但一定不要浪费MySQL的存储空间,因为存储空间一旦大了,就会影响整个B+树的高矮胖瘦,因为B+树是高扇出性,B+树的所有节点,都是16kb大小的内存页,可以做一个简单的计算,比如B+树的根节点是16kb,那么它就会存储一个指针,指向第二层,每个指针都是16kb大小,第二层就有1170个左右的16kb大小的向下指针,第三层就有1170平方个16kb大小的内存页,再乘以16,也就是大概可以存储2000万条数据,如果单条数据是16kb,整个B+树也就能存储2000万除以16条数据,也没多少,所以开始的时候就要保证单条数据量的大小,比如性别字段中男、女,就可以用1和0去标志,第一可以提高检索效率,第二就是可以控制数据量的大小,这样可以保证同样高度的B+树可以存储最多的数据,三层B+树索引基本就是三次IO。
二、当表设计完了,开始增删改查了,我们就要对表的索引进行设计了,那怎么去设计索引是需要根据业务需求去进行的&#