postgresql - 在 PostgreSQL 中,是否计算了 ORDER BY 子句中的所有表达式?

标签 postgresql query-optimization

我正在寻求优化我的 PostgreSQL 查询,但在涉及 ORDER BY 时找不到有关查询规划器内部工作的任何信息。

考虑以下 PostgreSQL 查询:

SELECT *
FROM mytable
ORDER BY rank, ST_Distance(geom1, geom2)

是否为 mytable 中的所有行计算了 ST_Distance(geom1, geom2),即使 rank 是唯一的?

不是 postgis 问题。 ST_Distance(geom1, geom2) 可以是任何需要(昂贵的)计算的表达式。

最佳答案

所有的都被评估了。 PostgreSQL 的 sort 投影它预先进行比较所需的所有表达式并存储结果。它不会推迟表达式求值,直到出现平局。

关于postgresql - 在 PostgreSQL 中,是否计算了 ORDER BY 子句中的所有表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70592365/

相关文章:

Oracle 中的 SQL 优化

python - 用指示字段的最小值或最大值的值对每个结果进行注释

mysql - 优化SQL : How to rewrite this query to boost performance?(使用子查询,摆脱GROUP BY?)

PostgreSQL 存储过程

postgresql - "FATAL: no pg_hba.conf entry for host"但我可以通过 pgAdmin 连接

mysql - POSTGRE 如何从分层表中选择父名称

postgresql - 使用 ogr2ogr 将多个 .GML 文件批量转换为 postgis sql 表

sql-server - SSIS 2014 和 Postgres ODBC 的连接泄漏问题

sql - select * from tablename 和 select column1, column2 from tablename 之间有性能差异吗?

mysql - 高效查询 - 当查询A表中的一组特定ID时,如何检查B表中的条件是否符合A表中选定的ID?