小贝_mysql sql语句优化过程

sql语句优化

一、SQL优化的一般步骤

  (1)、通过show status命令了解各种SQL的执行频率。

  (2)、定位执行效率较低的SQL语句-(重点select) 

  (3)、通过explain分析低效率的SQL语句的执行情况

  (4)、确定问题并采取相应的优化措施

(1) 通过showstatus命令了解各种SQL的执行频率

MySQL客户端连接成功后,通过使用show[session|global] status 命令可以提供服务器状态信息。其中的session来表示当前的连接的统计结果,global来表示自数据库上次启动至今的统计结果。默认是session级别的。

下面的例子: show status like ‘Com_%’;

其中Com_XXX表示XXX语句所执行的次数。

重点注意:

Com_select,Com_insert,Com_update,Com_delete通过这几个参数,可以容易地了解到当前数据库的应用是以插入更新为主还是以查询操作为主,以及各类的SQL大致的执行比例是多少。

参数说明:

com_xxx表示每个xxx语句的执行次数.如:

com_select 表示执行select操作的次数,一次查询只累计加1

com_update 表示执行update操作的次数

com_insert 表示执行insert操作的次数,对批量插入只算一次

com_delete 表示执行delete操作的次数

只针对innodb存储引擎的参数

Innodb_rows_deleted执行delete操作所影响的行数

Innodb_rows_inserted执行insert操作所影响的行数

Innodb_rows_read执行select操作所影响的行数

Innodb_rows_updated执行update操作所影响的行数

还有几个常用的参数便于用户了解数据库的基本情况。

connections:试图连接MySQL服务器的次数(成功or失败都会进行累加)

uptime:服务器工作的时间(单位秒)

slow_queries:慢查询的次数 (默认是10)


(2)、定位执行效率较低的SQL语句

通过开启慢查询

(3)、通过explain分析低效率的SQL语句的执行情况

(4)、确定问题并采取相应的优化措施



The quieter you become,the more you are able to hear!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:group_concat函数是MySQL中的一个聚合函数,用于将多行数据按照指定的方式进行连接。它的语法是group_concat(\[distinct\] 字段名 \[order by 排序字段 asc/desc\] \[separator '分隔符'\])。\[1\]当只指定字段名时,group_concat函数会将该字段的所有值连接起来,并用逗号作为分隔符。例如,在emp表中使用group_concat(emp_name)函数,会将emp_name字段的所有值连接起来,并用逗号分隔。结果如下: +-------------------------------+ | group_concat(emp_name) | +-------------------------------+ | 张晶晶,王飞飞,赵刚,刘小贝,王大鹏,张小斐,刘云云,刘云鹏,刘云鹏 | +-------------------------------+ 当使用group by子句对结果进行分组时,group_concat函数可以按照分组后的结果进行连接。例如,在emp表中使用group_concat(emp_name)函数,并按照department字段进行分组,结果如下: +------------+-------------------------------+ | department | group_concat(emp_name) | +------------+-------------------------------+ | 人事部 | 刘小贝,王大鹏,张小斐 | | 财务部 | 张晶晶,王飞飞,赵刚 | | 销售部 | 刘云云,刘云鹏,刘云鹏 | +------------+-------------------------------+ 引用\[2\]:在group_concat函数中,可以使用distinct关键字去除重复的值。例如,在emp表中使用group_concat(distinct emp_name)函数,并按照department字段进行分组,结果如下: +------------+-------------------------------+ | department | group_concat(emp_name) | +------------+-------------------------------+ | 人事部 | 刘小贝,王大鹏,张小斐 | | 财务部 | 张晶晶,王飞飞,赵刚 | | 销售部 | 刘云云,刘云鹏,刘云鹏 | +------------+-------------------------------+ 引用\[3\]:在group_concat函数中,还可以使用order by子句对连接的结果进行排序。例如,在emp表中使用group_concat(distinct emp_name order by salary desc)函数,并按照department字段进行分组,结果如下: +------------+--------------------------------------------------------------------+ | department | group_concat(distinct emp_name order by salary desc) | +------------+--------------------------------------------------------------------+ | 人事部 | 王大鹏,刘小贝,张小斐 | | 财务部 | 赵刚,王飞飞,张晶晶 | | 销售部 | 刘云云,刘云鹏 | +------------+--------------------------------------------------------------------+ 此外,还可以使用separator关键字指定连接的分隔符。例如,在emp表中使用group_concat(distinct emp_name order by salary desc separator '@')函数,并按照department字段进行分组,结果如下: +------------+--------------------------------------------------------------------+ | department | group_concat(distinct emp_name order by salary desc separator '@') | +------------+--------------------------------------------------------------------+ | 人事部 | 王大鹏@刘小贝@张小斐 | | 财务部 | 赵刚@王飞飞@张晶晶 | | 销售部 | 刘云云@刘云鹏 | +------------+--------------------------------------------------------------------+ 这样就可以将连接的结果用@符号作为分隔符进行显示。 #### 引用[.reference_title] - *1* *2* *3* [MySQL中group_concat函数用法总结](https://blog.csdn.net/weixin_44377973/article/details/103103745)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值