查询

优化数据访问

不要请求不需要的数据

  1. Do Not 查询不需要的记录

    例如在处理分页时,应该使用 Limit 限制 MySQL 只返回一页数据,而不是向应用返回全部

  2. Do Not 多表关联时返回全部列:只取需要的列

  3. Do Not 总是取出全部列

    select * 会让优化器无法完成索引覆盖扫描这类优化,带来额外的 IO 内存 CPU 消耗

  4. Do Not 重复查询相同数据

    当一行数据被多次使用时可以考虑缓存起来

避免扫描额外的记录

where 条件从好到坏

若发现查询需要扫描大量数据但只返回少数的行:

重构查询方式

切分查询 - 分治

将大查询切分成小查询,每个查询功能完全一样,只完成一小部分,每次只返回一小部分查询结果,可以避免锁住很多数据、占满事务日志、耗尽系统资源、阻塞很多小的但重要的查询。

分解关联查询