引言
现实场景中,假设你通过mySQL建立了一张sql表格,他的查询效率很低,怎么进行优化呢???
关键词:mySQL、查找、效率、优化
目录
1、为什么查询可能会慢呢? -- 阐述原因 -- 相应的解决办法
1、为什么查询可能会慢呢? -- 阐述原因 -- 相应的解决办法
常见原因:
- 查询却没有索引;
- 写了索引但是没效果,写法不对;
- 单表数据量太大;
- 硬件本身问题。
对应的解决方法:
1)没有索引 --- 那就增加索引,注意索引的规范:
- 根据 where 和 order by 使用比较频繁的字段创建索引,提高查询效率
- 索引不宜过多,单表最好不要超过 6 个。索引过多会导致占用存储空间变大;insert、update 变慢
- 删除未使用的索引
2)索引未生效 --- 注意索引书写的规范,以下为常见需要注意的语句 :
- 避免在 where 子句中对字段进行 null 值判断,创建表默认值是 NULL。尽量使用 NOT NULL,或使用特殊值,如 0、-1
- 避免在 where 子句中使用 != 或 <> 操作符, MySQL 只有对以下操作符才使用索引:<、<=、=、>、>=、BETWEEN、IN、非 % 开头的 LIKE
- 避免在 where 子句中使用 or 来连接条件,可以使用 UNION 进行连接
- 能用 union all 就不用 union,union 过滤重复数据要耗费更多的 CPU 资源
- 避免部分 like 查询,如 '%ConstXiong%'
- 避免在索引列上使用计算、函数
- in 和 not in 慎用,能用 between 不要用 in
- select 子句中避免使用 *
3)单表数据量太大 -- 表格本身问题,改变表格本身:
- 分页查询(在索引上完成排序分页操作、借助主键进行关联)
- 单表数据过大,进行分库分表
- 考虑使用非关系型数据库提高查询效率
- 全文索引场景较多,考虑使用 ElasticSearch、solr
2、其他关于慢SQL优化的问题
- 慢SQL日志;参考1
- 很多常见的SQL优化语句;参考常见Mysql的慢查询优化方式、参考MySQL数据库优化的八种方式(经典必看)