在greenplum中表扫描和seq扫描之间有什么区别

时间:2017-06-21 14:06:39

标签: greenplum

我创建了一个表Year1并使用Generate_series将数据插入其中。

DROP TABLE IF EXISTS YEAR1;
CREATE TABLE YEAR1
(
   ID        BIGSERIAL NOTNULL,
   DAT_YEAR     INTEGER
);

INSERT INTO YEAR1 (DAT_YEAR)
SELECT GENERATE_SERIES(1,10000);

创建和插入数据后,我使用legacy和PQO优化器运行了以下查询

SET OPTIMIZER=OFF;
EXPLAIN 
SELECT MAX(DAT_YEAR) FROM YEAR1;

SET OPTIMIZER=ON;
EXPLAIN 
SELECT MAX(DAT_YEAR) FROM YEAR1;

以下是我的查询计划

enter image description here

有人可以解释Seq扫描和表扫描之间的区别。我听说两者都是一样的。如果两者相同则为什么成本不同。

如果我将0.1M数据插入Year1表格,那么表格扫描的成本不会改变,但会改变Seq扫描

enter image description here

1 个答案:

答案 0 :(得分:1)

两个优化器使用的成本模型是不同的。

例如,GPORCA的表扫描几乎总是有431的成本,而遗留查询优化器的表扫描是可变的。

这些数字在特定的优化器中是有意义的,但它们在两个不同的优化器之间无法比较。