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

3、慢查询的优化案例

1、函数Max()的优化

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

select max(payment_date) from payment;

在这里插入图片描述
执行计划:

explain select max(payment_date) from payment;

在这里插入图片描述
在这里插入图片描述
可以看到显示的执行计划,并不是很高效,可以拖慢服务器的效率,如何优化了?
创建索引

create index inx_paydate on payment(payment_date);

在这里插入图片描述
在这里插入图片描述
索引是顺序操作的,不需要扫描表,执行效率就会比较恒定,

2、函数Count()的优化

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

错误的方式:
语句:

select count(release_year='2006' or release_year='2007') from film;

在这里插入图片描述
2006和2007年分别是多少,判断不出来

 select count(*) from film where release_year='2006' or release_year='2007';

在这里插入图片描述
正确的编写方式:

select count(release_year='2006' or null) as '06films',count(release_year='2007' or null) as '07films' from film;

在这里插入图片描述
区别:count(*)和count(id)
创建表并插入语句

 create table t(id int);
 
 insert into t values(1),(2),(null);

在这里插入图片描述

Count(*):select count(*)from t;

在这里插入图片描述

Count(id):select count(id)from t;

在这里插入图片描述
说明:
Count(id)是不包含null的值
Count(*)是包含null的值

发布了1077 篇原创文章 · 获赞 888 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_42528266/article/details/103993252