数据库sql调优之explain

explain

explain用于查询一个表的执行计划,它在SQL优化的时候经常要用到(详细的执行计划解释参考第五章执行计划详解)

1.下面代码演示了简单的执行计划的查看方法:

上面的执行计划是一个层次关系,先从最右边开始查看:

  1. 数据库先顺序扫描test2表,扫描大概有118单位的消耗,有1667行数据,平均长度为15字节。其中,1667行数据是一个估计值,是一个Segment的数据量,如果数据分布均匀,大概是总数据量除以Segment的个数。由于这个gp集群有6个Segment节点,因此可以推断test2表大概有1万行数据
  2. 扫描出test2表,并且计算hash值,将其保存在内存中
  3. 顺序扫描test1表
  4. 在扫描test1表的过程中,与test2表进行hash后的结果关联(hash join),关联的条件是两表的id字段相同
  5. 将数据汇总到Master上。Master将数据结果进行汇总并展现

2.EXPLAIN analyze (SELECT * from person where id>100 and age>1000 LIMIT 100) UNION ALL
 (SELECT * from person where id>1000 and age>5000 LIMIT 200) 

ctual time=中的第一个数字表示返回第一行需要的时间(叫启动时间),第二个数字表示执行这个整个花的时间(从最后行到当前行一共花费的时间)。后面的rows=300000是实际的行数。

3.  explain select * from t;
QUERY PLAN
———————————————————-
Seq Scan on t  (cost=0.00 ..4621.00  rows=300000  width=10 )
(1 row)

cost=说明:

第一个数字0.00表示启动cost,这是执行到返回第一行时需要的cost值。
第二个数字4621.00表示执行整个SQL的cost
 

 

 

你可能感兴趣的:(sql)