【直播】通过一条 SQL 语句,看透分布式数据库的查询优化

本文将由TDengine研发工程师王小玉深入解析SQL查询优化过程,从语法语义出发,通过一个具体的SQL语句实例,探讨优化规则如子查询提升、条件优化等,并介绍TDengine的查询优化模块设计。此外,还将关注时序数据库的查询需求,揭示分布式数据库查询优化的原理和机制。分享内容包括SQL优化规则、时序数据库查询特点以及TDengine的优化器设计和演进。
摘要由CSDN通过智能技术生成

我们先看一下,一条 SQL 语句从客户端发起到服务端执行所经历的过程。

1c103a466230984e5e92292cbec20981.png

图片来源于网络

优化器是这个过程中的关键环节,它决定了如何更好地执行一条 SQL 语句。优化器中包含很多优化规则,比如子查询提升、条件优化、无用列裁剪、子链接转换等。各种优化规则会被不断反复迭代执行,直到没有可以应用的优化规则为止。

大多数讲查询优化的文章和书籍都会用关系代数进行建模和讨论,这是正统和学术的,但不利于理解。

本次直播,TDengine 研发工程师王小玉将从语法语义开始,以一段 SQL 语句为线索,抽丝剥茧讲解它的前世今生,让大家更加整体和直观地去理解分布式数据库查询优化的运行原理和机制。他还会结合时序数据库的查询需求,为大家深入讲解 TDengine 是如何设计查询优化模块的。

他将分享:

  1. SQL 的语法语义模块

  2. 常见的优化规则

  3. 时序数据库的查询需求

  4. TDengine 如何设计优化器

  5. TDengine 查询优化的演进

下面这段 SQL 语句将陪着我们走完这趟查询优化之旅。大家也可以提前思考一下,应该如何来优化这段语句。

select f1.c2 from (
select c1 + 10 as nc, c2, c3 from t1 where c4 > 10
) f1
join (
select cc1, max(cc2) as m1, max(cc3) as m3 from t2 group by cc1
) f2 on f1.nc = f2.m1
where f1.c2 > 20 and f1.c3 in (select b from t3 where f1.c2 = t3.a)

王小玉,TDengine 研发工程师,从 2013 年开始从事分布式数据库的内核开发工作,对于分布式数据库内核实现与优化,特别是查询优化方面有着相当丰富的经验。目前在涛思数据从事 TDengine 内核查询功能的相关研发工作。

本次分享将在 2022 年 4 月 21 日(周四)20:00-21:00 通过「涛思数据」公众号进行直播,感兴趣的朋友可直接点击「阅读原文」进行预约报名。


👇 点击阅读原文,预约本周四直播!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值