作家
登录

优化SQL语句的一般步骤

作者: 来源: 2017-08-31 16:11:21 阅读 我要评论

优化SQL语句的一般步调

一、经由过程 show status 敕令懂得各类 sql 的履行频率

show status 敕令中心可以参加选项 session(默认) 或 global:

  • session (当前连接)
  • global (自数据前次启动至今)
  1. # Com_xxx 表示每个 xxx 语句履行的次数。 
  2. mysql> show status like 'Com_%'

我们平日比较关怀的是以下几个统计参数:

  • Com_select : 履行 select 操作的次数,一次萌芽只累加 1。
  • Com_insert : 履行 insert 操作的次数,对于批量插入的 insert 操作,只累加一次。
  • Com_update : 履行 update 操作的次数。
  • Com_delete : 履行 delete 操作的次数。

4. type=ref, 应用非独一索引扫描或独一索引的前缀扫描,返回匹配某个零丁值的记录行,例如:

膳绫擎这些参数对于所有存储引擎的表操作都邑进行累计。下面这几个参数只是针对 innodb 的,累加的算法也略有不合:

  • Innodb_rows_read : select 萌芽返回的行数。
  • Innodb_rows_inserted : 履行 insert 操作插入的行数。
  • Innodb_rows_updated : 履行 update 操作更新的行数。
  • Innodb_rows_deleted : 履行 delete 操作删除的行数。

经由过程以上几个参数,可以很轻易地懂得当前数据库的应用是以插入更新为主照样以萌芽操作为主,以及各类类型的 sql 大年夜致的履行比例是若干。对于更新操作的计数,是对履行次数的计数,不论提交照样回滚都邑进行累加。

此外,以下几个参数便于用户懂得数据库的根本情况:

  • Connections : 试图连接 mysql 办事器的次数。
  • Uptime : 办事器工作时光。
  • Slow_queries : 慢萌芽次数。

二、定义履行效力较低的 sql 语句

旧版本的 mysql 可以应用 profiles 分析 sql 机能,我用的是5.7.18的版本,已经不许可应用 profiles 了,推荐用

1. 经由过程慢萌芽日记定位那些履行效力较低的 sql 语句,用 --log-slow-queries[=file_name] 选项启动时,mysqld 写一个包含所有履行时光跨越 long_query_time 秒的 sql 语句的日记文件。

2. 慢萌芽日记在萌芽停止今后才记录,所以在应用反竽暌钩履行效力出现问题的时刻慢萌芽日记并不克不及定位问题,可以应用 show processlist 敕令查看当前 mysql 在进行的线程,包含线程的状况、是否锁表等,可以及时的查看 sql 的履行情况,同时对一些锁表操作进行优化。

三、经由过程 explain 分析低效 sql 的履行筹划

测试数据库地址:https://downloads.mysql.com/d...

统计某个 email 为租赁片子拷贝所付出的总金额,须要接洽关系客户表 customer 和 付款表 payment , 并且对于款金额 amount 字段做乞降(sum) 操作,响应的履行筹划如下:

  1. mysql> explain select sum(amount) from customer a , payment b where a.customer_id= b.customer_id and a.email='JANE.BENNETT@sakilacustomer.org'\G   
  2.  
  3. *************************** 1. row *************************** 
  4.            id: 1 
  5.   select_type: SIMPLE 
  6.         table: a 
  7.    partitions: NULL 
  8.          type: ALL 
  9. possible_keys: PRIMARY 
  10.           keyNULL 
  11.       key_len: NULL 
  12.           ref: NULL 
  13.          rows: 599 
  14.      filtered: 10.00 
  15.  1/10    1 2 3 4 5 6 下一页 尾页

      推荐阅读

      远胜微软谷歌等翻译器 | 基于神经网络和超级计算机的DeepL Translator

    Microsoft Translator是微软旗下的翻译对象,痊愈客岁成功切换至神经网路。当时,微软表示比拟较今朝行业内主流的统计机械翻译(SMT)技巧,神经收集架构可以或许大年夜幅晋升翻译质量。德>>>详细阅读


    本文标题:优化SQL语句的一般步骤

    地址:http://www.17bianji.com/lsqh/37055.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)