编辑
2021-07-02
开发
00
请注意,本文编写于 1420 天前,最后修改于 971 天前,其中某些信息可能已经过时。

目录

查询为什么会慢
主要问题
扫描了多余的行
查询了多余的列
优化策略
切分查询
分解关联查询

查询为什么会慢

一个查询一般是由多个子任务组成的,每个子任务都会消耗一定的时间。优化查询就是减少某个子任务的执行时间,或者减少某些子任务。

主要问题

扫描了多余的行

  • 没有使用limit
  • 多表关联时没有指定要获取的表数据
sql
SELECT * FROM a INNER JOIN b ON a.refid = b.id
  • 重复查询相同的数据

查询了多余的列

sql
SELECT * FROM a

优化策略

切分查询

sql
# 删除2018年前的数据 DELETE FROM a WHERE created_at < UNIX_TIMESTAMP('2018/01/01 00:00:00') # 切分查询 DELETE FROM a WHERE created_at < UNIX_TIMESTAMP('2016/01/01 00:00:00'); DELETE FROM a WHERE created_at < UNIX_TIMESTAMP('2017/01/01 00:00:00'); DELETE FROM a WHERE created_at < UNIX_TIMESTAMP('2018/01/01 00:00:00');

分解关联查询

sql
# 关联查询20调数据 SELECT * FROM a INNER JOIN b ON b.refid = a.id LIMIT 20; # 分解查询 SELECT * FROM a limit 20; SELECT * FROM b WHERE refid in () ;
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:谭三皮

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!