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

2020-02-13 13:01:04 浏览数 (1)

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的值

0 人点赞