ORDER BY
ORDER BY
ORDER BY子句用于按一个或多个输出表达式对结果集排序。
ORDER BY expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...]
每个expression可以由输出列组成,也可以是按位置选择输出列的序号。
ORDER BY子句在GROUP BY或HAVING子句之后,在OFFSET、LIMIT或FETCH FIRST子句之前进行计算。
按照SQL规范,ORDER BY子句只影响包含该子句的查询结果的行顺序。HetuEngine遵循该规范,并删除该子句的冗余用法,以避免对性能造成负面影响。
例如在执行INSERT语句时,ORDER BY子句不会对插入的数据产生影响,是个冗余的操作,会对整个INSERT语句的整体性能产生负面影响,因此HetuEngine会跳过ORDER BY操作。
- ORDER BY只作用于SELECT子句:
INSERT INTO some_table SELECT * FROM another_table ORDER BY field;
- ORDER BY冗余的例子是嵌套查询,不影响整个语句的结果:
SELECT * FROM some_table JOIN (SELECT * FROM another_table ORDER BY field) u ON some_table.key = u.key;