优化数据访问
一、是否向数据库请求了不需要的数据
- 查询了不要的记录
:页面只需要展示10条数据,数据库查询了100条。需要使用limit - 多表关联时返回了全部的列
:多表的关联的时候,获取需要使用到列,而不是全部的列 - 总是列表全部的列
:不要用select * ,虽然可以简化代码开发和代码利用率。但是需要额外的io,内存和cpu消耗 - 重复查询想要的数据
: 比如多个商品的分类id,是同一个,只要查询一次,而不是每个商品的分类都去查询一次
二、是否在扫描额外的记录
简单的衡量查询开销的三个指标:
- 响应时间
:响应时间由服务时间和排队时间两个部分组成。服务时间就是数据库处理这个查询的真正花了多少时间。排队时间是因为等待某些资源花费的时间,可能是等待I/o花费的时间.也可能是等待锁的时间。实际上比这个更加的复杂。 - 扫描的行数和返回的行数
:理想条件下这个比值是1:1,通常通过关联查询这个比值会在1:1和10:1之间,甚至更大。 - 扫描的行数和返回的行数
:可通过直接计划查看