作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
此查询在查询计划中显示“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”是什么意思?
EMP_ID = NULL
总是 false。EMP
表,因为统计信息可能与实际表内容不同。最佳答案
PostgreSQL 检测到 emp_id = NULL
始终为 false,因此它根本不扫描表,而是立即返回一个空结果。
“计划行”是估计的结果行数,为 0,因为 PostgreSQL 知道不能有结果行。通常,当 PostgreSQL 不能确定时,它会估计至少一个结果,以避免在估计不正确的情况下做出非常糟糕的计划。
关于postgresql - “Plan Rows: 0” 在 PostgreSQL 查询计划中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52821326/
我是一名优秀的程序员,十分优秀!