前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >性能优化-慢查询的优化案例

性能优化-慢查询的优化案例

作者头像
cwl_java
发布2020-02-13 13:01:04
1.1K0
发布2020-02-13 13:01:04
举报
文章被收录于专栏:cwl_Java

3、慢查询的优化案例

1、函数Max()的优化

用途:查询最后支付时间-优化max()函数 语句:

代码语言:javascript
复制
select max(payment_date) from payment;
在这里插入图片描述
在这里插入图片描述

执行计划:

代码语言:javascript
复制
explain select max(payment_date) from payment;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以看到显示的执行计划,并不是很高效,可以拖慢服务器的效率,如何优化了? 创建索引

代码语言:javascript
复制
create index inx_paydate on payment(payment_date);
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

索引是顺序操作的,不需要扫描表,执行效率就会比较恒定,

2、函数Count()的优化

需求:在一条SQL中同时查处2006年和2007年电影的数量

错误的方式: 语句:

代码语言:javascript
复制
select count(release_year='2006' or release_year='2007') from film;
在这里插入图片描述
在这里插入图片描述

2006和2007年分别是多少,判断不出来

代码语言:javascript
复制
 select count(*) from film where release_year='2006' or release_year='2007';
在这里插入图片描述
在这里插入图片描述

正确的编写方式:

代码语言:javascript
复制
select count(release_year='2006' or null) as '06films',count(release_year='2007' or null) as '07films' from film;
在这里插入图片描述
在这里插入图片描述

区别:count(*)和count(id) 创建表并插入语句

代码语言:javascript
复制
 create table t(id int);
 
 insert into t values(1),(2),(null);
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
Count(*):select count(*)from t;
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
Count(id):select count(id)from t;
在这里插入图片描述
在这里插入图片描述

说明: Count(id)是不包含null的值 Count(*)是包含null的值

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/01/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3、慢查询的优化案例
    • 1、函数Max()的优化
      • 2、函数Count()的优化
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档