博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第02课:解读执行计划
阅读量:4074 次
发布时间:2019-05-25

本文共 770 字,大约阅读时间需要 2 分钟。

SQL 语句在转换成查询树之后,就会进入优化器。优化器通过对查询树进行逻辑优化和物理优化后挑选出一个最优的执行计划,这个执行计划就会交给执行器来执行。因此,在使用 PostgreSQL 数据库的过程中,如果你在执行一个 SQL 语句时期望优化器给你带来的是卖家秀,结果实际上收到一个买家秀,那二话不说就先要看看这个 SQL 语句到底产生了一个什么样的执行计划,是不是因为优化器一时发昏选了一个比较“傻”的执行计划。

不同的执行算子示例

执行计划是一个非完全的二叉树,每个父结点至少有一个子结点(叶子结点除外),最多有两个子结点。PostgreSQL 数据库的查询执行器通过对这个二叉树迭代执行来获得查询结果,它的执行过程我们通常叫它火山模型。

在 PostgreSQL 中,可以使用 EXPLAIN 语句来展示查询语句的执行计划,例如:

INSERT INTO STUDENT SELECT i, repeat('A', i%5 + 1), i%2 FROM GENERATE_SERIES(1,10000) i;ANALYZE STUDENT;postgres=# EXPLAIN SELECT * FROM STUDENT;                          QUERY PLAN-------------------------------------------------------------- Seq Scan on student  (cost=0.00..155.00 rows=10000 width=12)(1 row)

由于上面的示例是对 STUDENT 表进行查询,获取 STUDENT 表中的所有数据,因而就需要用一个 Seq Scan 就够了,它会把 STUDENT 表中的数据全部遍历一遍,

转载地址:http://joyni.baihongyu.com/

你可能感兴趣的文章
Solr及Spring-Data-Solr入门学习
查看>>
python_time模块
查看>>
python_configparser(解析ini)
查看>>
selenium学习资料
查看>>
从mysql中 导出/导入表及数据
查看>>
HQL语句大全(转)
查看>>
几个常用的Javascript字符串处理函数 spilt(),join(),substring()和indexof()
查看>>
javascript传参字符串 与引号的嵌套调用
查看>>
swiper插件的的使用
查看>>
layui插件的使用
查看>>
JS牛客网编译环境的使用
查看>>
9、VUE面经
查看>>
Golang 数据可视化利器 go-echarts ,实际使用
查看>>
mysql 跨机器查询,使用dblink
查看>>
mysql5.6.34 升级到mysql5.7.32
查看>>
dba 常用查询
查看>>
Oracle 异机恢复
查看>>
Oracle 12C DG 搭建(RAC-RAC/RAC-单机)
查看>>
Truncate 表之恢复
查看>>
Oracle DG failover 后恢复
查看>>