天天看点

MySQL索引设计原则和技巧

作者:奋斗路上的小码农

1、代码先行,索引后上

不要表建完之后就凭着感觉立马建索引,应该等相关代码都写完了,把所有的sql都整理出来,然后分析,在建立合理的索引;

2、联合索引尽量覆盖查询条件

创建联合索引时,尽可能包含sql语句里的where、order by、group by字段,同时确保这些联合索引的字段满足最左前缀原则;

3、不在小基数字段上建索引

要在区分度高的字段上建索引,不要在像性别这种只有男、女这样的字段上建索引,没太大意义;

4、长的字符串可以采取使用部分前缀

特别是varchar这一类的,内容很长,但是一般取前20个字符就能定位到结果,索引也是要占内存的,当数据量大的时候这样可以节省内存;

比如 index(name(20)),取前20个作为索引

5、where与order by 冲突

这种情况优先考虑where,通过where筛选之后结果集可能就会变得很小,我们再对这些数据即使没有索引,排序也会很快

6、慢sql查询做优化

可以根据数据库监控,找出查询比较慢的sql,然后分析建立索引,做特定的优化。

1、先查看是否开启,开启慢查询,用set global slow_query_log='ON';

MySQL索引设计原则和技巧

2、用set global slow_query_log_file=路径设置慢查询文件保存位置;

MySQL索引设计原则和技巧

3、用subl 路径查询文件即可。

MySQL索引设计原则和技巧

mysql的慢查询一般保存在slow_log表

MySQL索引设计原则和技巧

继续阅读