为什么查询速度会慢

在尝试编写快速的查询之前,咱们需要清除一点,真正重要的是响应时间。如果把查询看成是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间。如果要有

优化查询,实际上要优化起子任务,要么消除其中一些子任务,要么减少子任务的执行次数,Mysql在执行查询的时候有哪些子任务,哪些子任务运行的速度很慢?这里还不好给出完

整的列表。一般来说,查询的生命周期大致可以按照顺序爱看:从客户端->服务器->然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端。其中执行可以认为是整个生

命周期中最重要的阶段,这其中包括了大量为了检索数据到存储引擎的调用以及调用后的数据处理,包括排序、分组等。

在完成这些任务的时候,查询需要在不同的地方话费时间,包括网络,cpu计算,生成统计信息和执行计划、锁等操作,尤其是向底层存储引擎检索数据的调用操作,这些调用操作需要在内存操作、cpu操作和内存不足时导致的i/o操作上消耗时间。

在每一个消耗大量时间的查询案例中,我们都能看到已写不必要的额外操作、某些操作被额外重复了很多次、某些操作执行的太慢.优化查询的目的就是减少和消除这些操作所花费的时间。

我们上面说的并不完整,因为先了解查询的生命周期、清楚查询的时间消耗情况对于优化查询有很大的意义。第二章会说下如何优化查询........

mysql 查询性能优化第一章 为什么查询速度会慢的更多相关文章

  1. Tsql2008查询性能优化第一章---APPLY

       APPLY运算符涉及以下两个步骤中的一步或两步(取决于APPLY的类型):           1.A1把右表表达式应用于左表的行.           2.A2:添加外部行.       Ap ...

  2. Linux性能优化 第一章 性能追踪建议

    1.1常用建议1.1.1记大量的笔记(记录所有的事情)在做性能调优问题的时候很重要的一个操作就是记录下所有的事情,包括每一个输出.执行的结果.可以新建一个文件夹,然后把结果的文件都塞到该文件夹内.包括 ...

  3. 高性能mysql 第六章查询性能优化 总结(上)查询的执行过程

    6  查询性能优化 6.1为什么查询会变慢 这里说明了的查询执行周期,从客户端到服务器端,服务器端解析,优化器生成执行计划,执行(可以细分,大体过程可以通过show profile查看),从服务器端返 ...

  4. 高性能mysql 第6章 查询性能优化

    查询缓存: 在解析一个sql之前,如果查询缓存是打开的,mysql会去检查这个查询(根据sql的hash作为key)是否存在缓存中,如果命中的话,那么这个sql将会在解析,生成执行计划之前返回结果. ...

  5. mysql笔记03 查询性能优化

    查询性能优化 1. 为什么查询速度会慢? 1). 如果把查询看作是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减 ...

  6. MySQL查询性能优化(精)

    MySQL查询性能优化 MySQL查询性能的优化涉及多个方面,其中包括库表结构.建立合理的索引.设计合理的查询.库表结构包括如何设计表之间的关联.表字段的数据类型等.这需要依据具体的场景进行设计.如下 ...

  7. 170727、MySQL查询性能优化

    MySQL查询性能优化 MySQL查询性能的优化涉及多个方面,其中包括库表结构.建立合理的索引.设计合理的查询.库表结构包括如何设计表之间的关联.表字段的数据类型等.这需要依据具体的场景进行设计.如下 ...

  8. 到底该不该使用存储过程 MySQL查询性能优化一则

    到底该不该使用存储过程   看到<阿里巴巴java编码规范>有这样一条 关于这条规范,我说说我个人的看法 用不用存储过程要视所使用的数据库和业务场景而定的,不能因为阿里巴巴的技术牛逼,就视 ...

  9. MySQL查询性能优化七种武器之索引下推

    前面已经讲了MySQL的其他查询性能优化方式,没看过可以去了解一下: MySQL查询性能优化七种武器之索引潜水 MySQL查询性能优化七种武器之链路追踪 今天要讲的是MySQL的另一种查询性能优化方式 ...

随机推荐

  1. js循环处理后台返回的json数组

    <script type="text/javascript"> function gongdan_search(elm){ var dangqian_value=$(e ...

  2. 两种代理模式(JDK和Cglib)实例

    CGlib代理模式: package CGLIB; import java.lang.reflect.Method; import JDK.Test; import net.sf.cglib.prox ...

  3. jQuery与原生js实现banner轮播图

    jQuery与原生js实现banner轮播图: (jq需自己加载)(图片需自己加载) <!DOCTYPE html> <html> <head> <meta ...

  4. jq-animate实现返回顶部效果

    jq-animate实现返回顶部效果: <!doctype html> <html lang="en"> <head> <meta cha ...

  5. JDBC数据库增、删、改、查方法实现类

    package daoMYSQL;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedSt ...

  6. PILLOW图片中加入中文 曲线救国Opencv

    索引 简述 准备 示例 效果图 结语 简述 我在使用opencv2或3的时候想要在图片上添加中文文字,需要去下载Freetype库,编译好链接到opencv库中才能中文的输出.网上大部分在图片中插入中 ...

  7. 预编译语句(Prepared Statements)介绍,以MySQL为例

    背景 本文重点讲述MySQL中的预编译语句并从MySQL的Connector/J源码出发讲述其在Java语言中相关使用. 注意:文中的描述与结论基于MySQL 5.7.16以及Connect/J 5. ...

  8. Azure PowerShell (14) 批量导出Azure ASM ACL和ARM NSG配置信息

    <Windows Azure Platform 系列文章目录> 最近有一个客户需求,需要批量导出Azure Classic VM的ACL (Access Control List), 还有 ...

  9. python基础(3):输入输出与运算符

    今天总结一下最基础的输入输出和运算符 输入: python3里都是input("") input() name = input()    #输入的值会直接赋值给name name ...

  10. MySQL oracle 分页

    (1)MySql的Limit m,n语句 Limit后的两个参数中,参数m是起始下标,它从0开始:参数n是返回的记录数.我们需要分页的话指定这两个值即可. 比如:查询10行记录,起始行从3开始 SEL ...