首页 > 数据库 > 国内数据库 > 输出并分析gbase8s查询计划
一. 通过Set explain on 来输出查询计划
Set explain on 是 GBase 8s 后台查看执行计划的命令,在执行 SQL 语句之前执行该语句。
SET EXPLAIN 语句的基本语法如下:
>>-SET EXPLAIN-------------------------------------------------------------------><
|----OFF-------------------------------------------|
| -ON----------------------------------------------|
| -AVOID_EXECUTE- |
|-FILE TO---'filename '-------------------------|
其中,
ON :为每个后续查询生成评估并将结果写入当前目录中的输出文件。如果文件已经存在,那么新输出会附加到现有文件中。
AVOID_EXECUTE :防止 SELECT 、INSERT 、UPDATE 或 DELETE 语句在数据库服务器将查询计划打印到输出文件中时执行。
OFF :终止 SET EXPLAIN 语句的活动,以便不再为后续查询生成评估或不再将评估写入输出文件 。
FILE TO :为每个后续查询生成评估并使我们能够指定说明输出文件的位置。
下面 SQL 语句的查询计划,执行该 SQL 语句:
SET EXPLAIN ON;
SELECT * FROM t1 WHERE name='lili';
如果用户希望了解下述 SQL 语句的查询计划但不希望执行下述 SQL 语句,则我们
可以执行:
SET EXPLAIN ON AVOID_EXECUTE;
SELECT * FROM t1 WHERE name='lili';
如果用户希望了解下述 SQL 语句的查询计划,并将结果输出到自己指定的文件,则
该文件为数据库服务器端的文件信息:
SET EXPLAIN ON AVOID_EXECUTE;
SET EXPLAIN FILE TO '/tmp/explain.out'
SELECT * FROM t1 WHERE name='lili';
二. 查询计划输出内容分析
输出的查询计划包含以下几个部分:
(1 )执行时间(OPTIMIZATION TIMESTAMP ):执行 SQL 语句的实际时间。
(2 )查询语句:执行计划的原 SQL 语句。
(3 )预估开销值(Estimated cost ):优化器用来决定查询路径的数值。与查询耗时不直接相关,不能用于比较不同 SQL 的执行效率,可用于比较相同 SQL 不同执行计划的执行开销。
(4 )预估返回行数(Estimated # of Rows Returned ):基于数据库系统表的信息,预估SQL 语句返回的数据行数。
(5 )表的访问顺序。
(6 )表的访问方法。
(7 )使用的索引路径。
(8 )实际执行情况统计(Query statistics )。
示例如下:
QUERY: (OPTIMIZATION TIMESTAMP: 08-04-2015 03:03:43) -- ①执行时间 ------
-- ②执行的 SQL 语句
SELECT * FROM customer, orders
WHERE customer.customer_num = orders.customer_num
Estimated Cost: 9 -- ③预估开销值
Estimated # of Rows Returned: 23 -- ④预估返回行数 -
⑤表访问顺序 1. 表 orders 2. 表 customer
⑥表访问方法 orders 使用顺序扫描( SEQUENTIAL SCAN )
customer 使用索引( INDEX PATH )
1)orders: SEQUENTIAL SCAN
2)customer: INDEX PATH
-- ⑦使用的索引名为” 100_1 ” ,索引包含字段 customer_num ,使用的索引过滤条件为 customer.customer_num =orders.customer_num
(1) Index Name: 100_1
Index Keys: customer_num (Serial, fragments: ALL)
Lower Index Filter:customer.customer_num =orders.customer_num
NESTED LOOP JOIN
-- ⑧实际执行情况统计:
|
名称 |
含义 |
|
type |
操作类型 |
|
table |
表名(实名从 Table map 表中对应) |
|
rows_prod |
实际操作行数 |
|
est_rows |
预估操作行数 |
|
rows_scan |
实际扫描行数 |
|
time |
实际执行时间 |
|
est_cost |
预估开销值 |
Query statistics:
-----------------
Table map :
----------------------------
Internal name Table name
----------------------------
t1 orders
t2 customer
type table rows_prod est_rows rows_scan time est_cost
-------------------------------------------------------------------
scan t1 23 23 23 00:00.00 3
type table rows_prod est_rows rows_scan time est_cost
-------------------------------------------------------------------
scan t2 23 28 23 00:00.00 0
type rows_prod est_rows time est_cost
-------------------------------------------------
nljoin 23 23 00:00.00 10
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69980677/viewspace-2769753/ ,如需转载,请注明出处,否则将追究法律责任。