前言
对于一些高访问量高存储量的数据库来说,如何提升性能一直都是重中之重,如设计最优的库表结构、建立索引......
但这些都是不够的,对于查询语句的优化一样不能忽视。如果查询写的很糟糕,数据库一样无法实现高性能。
因此,本篇会来大致介绍一下如何提升数据库的查询性能。
数据库查询的生命周期
一般情况下,数据库的查询会经历以下过程:
客户端-->服务器-->在服务器上进行解析-->生成执行计划-->执行-->返回结果给客户端。
其中执行可以认为是整个生命周期中最重要的阶段,这其中包括了大量为了检索数据到存储引擎的调用以及调用后的数据处理,包括排序、分组等。了解查询的生命周期、清楚查询的时间消耗情况对于优化查询有很大的意义。
优化数据访问
查询性能低下的最基本的原因是访问的数据太多。大部分性能低下的查询都可以通过减少访问的数据量的方式进行优化。
- 确认应用程序是否在检索大量超过需要的数据。这通常意味着访问了太多的行,但有时候也可能是访问了太多的列。
- 确认MySQL服务器层是否在分析大量超过需要的数据行。
此时,我们需要检查我们的查询语句是否有以下情况:
- 查询了不需要的记录,如展示的当前页面只有10条数据,此时就不需要把所有的数据全部查询出来。
- 多表关联时返回全部列,甚至总是取出全部的列,这里我们要检查我们的 “SELECT * ” 语句,真的需要取出所有的列吗。
- 重复查询相同的数据,如果一些数据会被重复查询,那我们需要注意有没有设置缓存。