当前位置:网站首页>GBase 8s 执行计划查询分析

GBase 8s 执行计划查询分析

2022-08-11 05:21:00 蜻蜓队镸

GBase 8s的执行计划时帮助调优的最有用的工具之一,从中可以看出 SQL 是如何执行的,可以看到访问方法(全表扫描或索引),看到并行(并行读,顺序读)是否跳过分片,看到表的访问顺序,看到表的连接方式(hash,nested loop,sort merge),采用哈希连接时,哪张表用来生成哈希桶中的值,哪张表是被观察的(probe),可以画出查询树。

SET EXPLAIN ON AVOID_EXECUTE

在执行 SQL 语句之前,通过 set explain on语句、set explain on avoid_execute语句、explain 指示器中的任何一种方法可以获得 SQL 语句的执行计划。set explain on 和 set explain on avoid_execute 的区别是:前者执行之后,后面的 SQL 语句会真执行;而后一种方式,后面的 SQL 语句不会执行,在UNIX平台上只会把执行计划写到当前目录的申请sqexplain.out文件。

嵌套循环连接

在嵌套循环连接中,数据库服务器会扫描第一张表,也称做 outer table,如何第一张表上有过滤条件,满足条件的每一条记录都会去和第二张表连接,第二张表也称为inner table。outer table可能通过索引去访问,也可能进行全表扫描,由于有潜在的可能 inner table 会被读很多次。通常数据库会通过索引去访问 inner table,如果inner table 没有索引,SQL在执行是,优化器会判断在SQL执行时是否需要自动创建一个索引。当优化器判断出创建一个索引的开销比通过 outer table 中满足条件的行去和 inner table 做表连接的开销要小时,才会自动创建索引。

哈希连接

当两张表做连接时,其中一张或两张表上连接的字段上可能没有索引,或者其中有一张表需要读大量的数据。
哈希连接一般由两部工作组成,第一部分是根据过滤条件排除掉不需要的记录行,然后创建哈希表。第二部分是观察(probe)哈希表。
在创建哈希表阶段,优化器通过 update statistics mediun(或high)和其他的开销统计信息决定两张表中哪个表的相关记录数较小,或者它构建一张小的表;在这张表上创建哈希表。
哈希表本身很像一组桶,哈希函数的输入参数称做key,根据哈希函数的返回值来决定将列值放入哪个桶中,哪些返回值相同的列值将被放在桶一个哈希桶中。

原网站

版权声明
本文为[蜻蜓队镸]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_37004539/article/details/126173613