更新时间:2024-07-24 GMT+08:00

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;