Mysql优化
Posted 岩文01
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql优化相关的知识,希望对你有一定的参考价值。
mysql优化可从四个层面着手:
- 表结构的设计
-
- 字段类型的选取,尽量考虑使用整型类定义字段,比如在符合范围值的情况下使用tinyint、smallint;甚至可将IP定位为整型(4个字节,32位,IP的每一段刚好可以用8位二进制表示);
- 如果字段类型为blob/text的列查询较少,而其它字段列有频繁查询,可将这些列分开设计在不同的表里(同一张表缓存查询有较大影响);
- 与where、group by 和sort by 查询询字段建立适当索引,以下情况不适合建索引:
- CLOB和BLOB类型的数据不宜建索引;
- 小型表(如300条记录以下的表)不需建索引(如果频繁更新操作会造成额外负担);
- 查询中很少使用和参考的列不适合建索引;
- 当修改性能远大于检索性能时不合适建索引
- 建索引策略:
- 创建唯一性索引可保证该列字段值的唯一性操作;
- 逻辑上表空间和索引空间分开,但最好从物理上将索引数据和表数据分开存储;
- 建索引时,会对表进行全表扫描,并进行排序,所以相应的初始化参数可能需要调整;同时因为会有锁表操作,所以不能在业务对该表进行操作时进行索引创建;
- Mysql查询每次只能使用一个索引,所以如查询“select * from staff where name=‘XXX‘ and department=‘XXX‘ and age=23”,最好创建复合索引(name+department+age),该索引实际上是建立了(name+industry+age),(name+industry),(name)三个索引;如果name在查询中最频繁使用,则放在最左边;
- 索引值不会包含NULL值,所以如果某一复合索引列的值含有NULL值,则列索引会失效;
以上是关于Mysql优化的主要内容,如果未能解决你的问题,请参考以下文章