前言
查询优化、索引优化、库表结构优化需要齐头并进,一个不落。
最佳实践
是否在检索大量的数据行
大多数的慢查询都是因为检索了大量的数据行导致的。
每次看到select * 时都应该有怀疑审视的目光
1.不必要的列可能导致过多的IO/CPU/内存消耗。
2.无法使用覆盖索引提升性能。
不要重复执行相同的查询
例如用户头像URL,应当在首次查询后缓存起来。
检查3个指标
- 响应时间
- 扫描的行数
- 返回的行数
响应时间 = 服务时间 + 排队时间。
服务时间是指数据库处理查询时真正花了多少时间,排队时间是指服务器因为等待某个资源而没能真正执行查询的时间,如等待IO完成,等待行锁等。
选择一个复杂查询还是多个简单查询
切分查询
删除旧数据就是一个很好的例子。
有时候,将多个join查询拆分成多次单表查询更有效。
理解查询背后的工作原理
文章来源: segmentfault.com,作者:小强大人,版权归原作者所有,如需转载,请联系作者。
原文链接:segmentfault.com/a/1190000039356979