返回首页

gbase数据、南大通用产品文档:GBase8aEXPLAIN显示查询计划

更新日期:2024年09月11日

GBase 8a MPP Cluster 的EXPLAIN 命令显示正确的查询计划,对于CBO(基于
成本的优化)的计划,显示每个步骤的评估结果,包括成本、记录条数、记录宽
度、选择率。用户可以在执行SQL 之前查看计划。
语法:

查看SELECT 的查询计划:
EXPLAIN/DESC [extended/partitions] SELECT……

查看CTE 的查询计划:
EXPLAIN/DESC [extended/partitions] WITH……SELECT

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1142
注意
EXPLAIN 与DESC 等价,因此可以互换,用来查看SELECT 的查询计划。

示例如下:
CREATE OR REPLACE PROCEDURE P_5_12 AS
TYPE dnames_tab IS TABLE OF VARCHAR2(30);
dept_names dnames_tab := dnames_tab('Shipping','Sales','Finance','Payroll'); -- 初始化
empty_set dnames_tab; -- 相当于NULL

GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 66 -

BEGIN
IF dept_names IS NULL THEN
DBMS_OUTPUT.PUT_LINE('dept_names is null.');
ELSE
DBMS_OUTPUT.PUT_LINE('dept_names is not null.');
END IF;

dept_names := empty_set; -- 赋值NULL.
IF dept_names IS NULL THEN
DBMS_OUTPUT.PUT_LINE('dept_names is null.');
ELSE
DBMS_OUTPUT.PUT_LINE('dept_names is not null.');
END IF;

dept_names := dnames_tab ('Shipping','Sales','Finance','Payroll'); -- 重新初始化

IF dept_names IS NULL THEN
DBMS_OUTPUT.PUT_LINE('dept_names is null.');
ELSE
DBMS_OUTPUT.PUT_LINE('dept_names is not null.');
END IF;
END;

--Result:
--dept_names is not null.
--dept_names is null.
--dept_names is not null.


GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
911