优化数据访问
不要请求不需要的数据
Do Not 查询不需要的记录
例如在处理分页时,应该使用 Limit 限制 MySQL 只返回一页数据,而不是向应用返回全部
Do Not 多表关联时返回全部列:只取需要的列
Do Not 总是取出全部列
select * 会让优化器无法完成索引覆盖扫描这类优化,带来额外的 IO 内存 CPU 消耗
Do Not 重复查询相同数据
当一行数据被多次使用时可以考虑缓存起来
避免扫描额外的记录
where 条件从好到坏
若发现查询需要扫描大量数据但只返回少数的行:
切分查询 - 分治
将大查询切分成小查询,每个查询功能完全一样,只完成一小部分,每次只返回一小部分查询结果,可以避免锁住很多数据、占满事务日志、耗尽系统资源、阻塞很多小的但重要的查询。
分解关联查询