我创建了一个表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;
以下是我的查询计划
有人可以解释Seq扫描和表扫描之间的区别。我听说两者都是一样的。如果两者相同则为什么成本不同。
如果我将0.1M数据插入Year1表格,那么表格扫描的成本不会改变,但会改变Seq扫描
答案 0 :(得分:1)
两个优化器使用的成本模型是不同的。
例如,GPORCA的表扫描几乎总是有431的成本,而遗留查询优化器的表扫描是可变的。
这些数字在特定的优化器中是有意义的,但它们在两个不同的优化器之间无法比较。