4
是否真的有可能无法保证针对此特定的冗余派生表的顺序?
在与Lukas Eder的Twitter交谈中,我偶然发现了这个问题。 尽管正确的行为是将ORDER BY子句应用于最外层查询,因为在这里,我们没有在最外层查询中使用DISTINCT,GROUP BY,JOIN或任何其他WHERE子句,因此RDBMS为什么不通过传入的数据是否由内部查询排序? SELECT * FROM ( SELECT * FROM table ORDER BY time DESC ) AS t 至少在PostgreSQL上运行此示例时,对于内部查询和此派生表示例,您将获得相同的执行计划,以及相同的结果集。 因此,我认为规划器将只丢弃最外面的查询,因为它是多余的,或者只是传递内部表的结果。 有人认为情况可能并非如此吗?