一. 不走索引的情况
- 使用 != 和 <> 不等于符号查询
- 使用 not in、 not exists 查询
- 使用like后缀查询,如’%string’
- 在建立索引和没有索引的字段上使用or,会导致查询不走索引
- 使用>、 <、 <=、 >= 符号,可能不走索引,这个要看优化器的判断
- 字符串类型字段使用数字进行比较,不走索引,如 (varchar(200) name) name=123
- 在索引字段上计算
- 在索引字段行使用函数操作
二. 优化
- or语句使用union替代
- 字段尽量使用短类型,如年龄int使用 tinyint替代
- 通过Explain分析低效的sql语句
- where、orderby和join字段建立索引
- 字段尽量避免使用 null值,设置默认值,如字符串’’, 数字0
- 查询字段避免使用*,只查询需要数据
- 大表尽量避免多表关联
- 经常使用大数据字段垂直分表,如text存储文章
- 字段适量冗余
- 大表可以进行分表, 垂直分表和水平分表