在尝试编写快速的查询之前,需要清楚一点,正在重要的是响应时间。如果把查询看做一个任务,那么他由一系列子任务组成,每个子任务都会消耗一定的时间。如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减少子任务的执行速度,要么让子任务运行更快
Mysql在执行查询有哪些子任务,哪些子任务运行的速度很慢,这里很难给出完整的列表,通常来说查询的生命周期大致可以按照顺序来看: 从客户端,到服务器,然后再服务器上进行解析,生成执行计划,执行,返回结果给客户端。其中,"执行"可以被认为是整个生命周期最重要的阶段,这其中包括了大量为了检索数据到存储引擎的调用,以及调用后的数据处理,包括排序,分组等。
在每一个消耗大量的时候查询案例中,我们都能看到一些不必要的额外操作,某些操作被额外的重复很多次,某些操作执行太慢等。优化查询的目的就是减少和消除这些操作所花费的时间