美文网首页
SQL的优化技巧(一)

SQL的优化技巧(一)

作者: 照希 | 来源:发表于2023-05-11 13:52 被阅读0次
  1. where条件优化
select a.dt,a.key1,a.col1,b.col1,c.col1
from a
left join b
on a.dt=b.dt
and a.key1=b.key1
left join c
on a.dt=c.dt
and a.key1=c.key1
where a.dt='2023-01-01';

此时的执行过程是


image.png

此时可以在每次链接表之前先筛选出所需分区数据。

select a.dt,a.key1,a.col1,b.col1,c.col1
from (select a.coll,a.dt,a.key1 from a where a.dt='2023-01-01') a
left join (select b.coll,b.dt,b.key1 from b where b.dt='2023-01-01') b
on a.dt=b.dt
and a.key1=b.key1
left join (select c.coll,c.dt,c.key1 from c where c.dt='2023-01-01') c
on a.dt=c.dt
and a.key1=c.key1;

执行过程如下


image.png
  1. COUNT DISTINCT 优化
    sql语句计算经常会用到 COUNT(DISTINCT),但在数据比较倾斜的时候 COUNT(DISTINCT) 会比较慢这时可以尝试用 GROUP BY 改写代码计算 。
select pt,count(distinct device_id) as dau
from olap.olap_log_bigc_dau_sbase_di
where pt='${-1d_yyyyMMdd}'
group by pt

优化后

select pt,count(*) as dau
from (select pt,device_id from olap.olap_log_bigc_dau_sbase_di where pt = '${-1d_yyyyMMdd}'
         group by pt,device_id) t
group by pt

distinct 会将所有数据放到同一个内存中执行,而group by是先排序,然后再计数,会有一定程度的优化。

相关文章

  • Mysql 优化

    1.Sql优化 1)sql优化分析2)索引优化3)sql语句优化4)一些常用的技巧优化 (正则、函数) 2.优化数...

  • (103)mysql优化之sql语句优化

    概述 该篇主要介绍一些常用的sql优化技巧 sql优化 1.select * from table_name wh...

  • sql面试题大全

    sql面试题大全 1、[10条SQL优化技巧](http://www.wityx.com/post/250_1_1...

  • SQL优化技巧

    一、插入优化 1.1 手动提交事务 由于mysql默认事务提交方式是自动提交的,意味着当我们执行完一条insert...

  • sql面试题大全

    sql面试题大全1、10条SQL优化技巧2、58到家MySQL数据库开发规范3、java.sql.Date和jav...

  • 常用sql优化2019-09-27

    sql优化 sql优化.................................................

  • 4条SQL技巧(sql 优化 sql索引优化)

    (1)负向条件查询不能使用索引 not in/not exists都不是好习惯 可以优化为in查询: (2)前导模...

  • mysql数据库优化

    1. Mysql优化介绍 1.1 sql优化 a. sql优化分析b. 索引优化c. 常用sql优化d. 常用优化...

  • sql优化的一般策略

    sql 优化的一般策略:索引优化,sql改写,参数优化,优化器 索引优化 以select * from vvsho...

  • sql优化小技巧

    11.大数据量时,怎样让全局count/sum distinct更快? 以下两个SQL,有人可能认为例句1快于例句...

网友评论

      本文标题:SQL的优化技巧(一)

      本文链接:https://www.haomeiwen.com/subject/rvessdtx.html