【数据库】sql优化有哪些?从query层面和数据库层面分析

目录

归纳

这类型问题可以称为:Query Optimization,从清华AI4DB的paper list中,该类问题大致可以分为:

  • Query Rewriter
  • Cardinality Estimation
  • Cost Estimation
  • Plan Optimization

从中文的角度理解那就是:

  • 查询重写
  • 基数估计
  • 成本估计
  • 执行计划优化

sql本身的优化

可以发现,这类型的优化问题,大多数从sql本身,或者说从执行计划本身入手,通过执行计划本身的优化来提升sql的性能。比如,数据库优化器给出某条sql的执行计划,但是由于数据库本身对于基数估计不准确,所以产生了次优的执行计划,这时候查询重写技术通过对执行计划进行优化,修改join order条件,达到更优的执行计划,从而提升sql的执行效率。

数据库层面的优化

但还有一类型的优化,并不从sql的本身出发,或者说不是那么直接的sql层面出发,而是从数据库层面入手,就有很多优化技术:如,参数调优、物化视图等技术。

以spark-sql为例,它有很多参数,而每次执行的结果和对应的参数密切相关,参数调优的目的就是找到一组最佳的参数去调高sql执行效率,它不从sql层面入手,但是却也达到了sql优化的效果。

相关推荐
Doris Liu.1 分钟前
macOS取证分析——Safari浏览器、Apple Mail数据和Recents数据库
数据库·macos·缓存·sqlite·safari·电子数据取证·macos取证
pwzs1 小时前
理解最左前缀原则:联合索引命中规则全解析(含流程图)
数据库·sql·mysql
小卡车5551 小时前
MySQL5.7递归查询
数据库
匹马夕阳1 小时前
(二十二)安卓开发中的数据存储之SQLite简单使用
android·数据库·sqlite
Always_away2 小时前
数据库系统概论|第三章:关系数据库标准语言SQL—课程笔记4
数据库·笔记·sql·学习
cg50172 小时前
Spring Boot 中的自动配置原理
java·前端·数据库
在下_诸葛2 小时前
狂神SQL学习笔记六:列的数据类型讲解
笔记·sql·学习
程序猿John3 小时前
Mysql读写分离(2)-中间件mycat和实践方案
数据库·mysql·中间件
FreeBuf_3 小时前
美国国土安全部终止资助,CVE漏洞数据库项目面临停摆危机
数据库·安全·web安全
weixin_307779133 小时前
Azure Synapse Dedicated SQL pool里大型表对大型表分批合并数据的策略
数据仓库·sql·microsoft·azure