gpt4 book ai didi

postgresql - “Plan Rows: 0” 在 PostgreSQL 查询计划中意​​味着什么?

转载 作者:行者123 更新时间:2023-11-29 14:02:44 25 4
gpt4 key购买 nike

此查询在查询计划中显示“Plan Rows: 0”。

CREATE TABLE EMP (
EMP_ID CHAR(4),
EMP_NAME VARCHAR(200)
);
INSERT INTO EMP VALUES ( '1000', 'JOHN DOE' );
INSERT INTO EMP VALUES ( '1001', 'ALAN SMITHEE' );
INSERT INTO EMP VALUES ( '1002', 'JANE DOE' );
EXPLAIN (ANALYZE, FORMAT JSON)
SELECT * FROM EMP WHERE EMP_ID = NULL;

结果:

[ { "Plan": {
"Node Type": "Result",
"Parallel Aware": false,
"Startup Cost": 0.00,
"Total Cost": 0.00,
"Plan Rows": 0,
"Plan Width": 438,
"Actual Startup Time": 0.001,
"Actual Total Time": 0.001,
"Actual Rows": 0,
"Actual Loops": 1,
"One-Time Filter": "false"
},
"Planning Time": 0.023,
"Triggers": [ ],
"Execution Time": 0.011 } ]

此查询计划中的“Plan Rows: 0”是什么意思?

  1. PostgreSQL 没有扫描任何记录,因为 EMP_ID = NULL 总是 false。
  2. PostgreSQL 扫描了 EMP 表,因为统计信息可能与实际表内容不同。

最佳答案

PostgreSQL 检测到 emp_id = NULL 始终为 false,因此它根本不扫描表,而是立即返回一个空结果。

“计划行”是估计的结果行数,为 0,因为 PostgreSQL 知道不能有结果行。通常,当 PostgreSQL 不能确定时,它会估计至少一个结果,以避免在估计不正确的情况下做出非常糟糕的计划。

关于postgresql - “Plan Rows: 0” 在 PostgreSQL 查询计划中意​​味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52821326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com