腾讯云数据仓库 TCHouse-X ORDER BY 子句

ORDER BY 子句用于根据一个或多个列的值对 SELECT 语句的结果集进行升序(ASC)或降序(DESC)排列。

相关产品
腾讯云数据仓库 TCHouse-X 产品页,含版本规格、价格与购买入口。

一、执行原理

TCHouse-X 中,执行 ORDER BY 是一项高开销操作,其过程如下:

1. 局部排序:各计算节点并行对其负责的数据分片进行本地排序。

2. 结果汇聚:排序后的数据流传输至协调器节点(Coordinator)。

3. 全局合并:协调器通过归并算法将各节点的结果集串行合并。

二、语法规范

ORDER BY col_ref [, col_ref …] [ASC | DESC] [NULLS FIRST | NULLS LAST]col_ref ::= column_name | integer_literal

列引用方式:

·名称引用:最常用的方式,如 ORDER BY price。

·位置索引(列号):可以使用整数常量。例如 ORDER BY 1 表示按 SELECT 列表中的第一列排序。

注意:说明:

注意:列号必须是显式列出的列,不能在 SELECT * 语句中使用。必须是数字常量,不可使用复杂的表达式或字符串。

三、升序与降序

·ASC(默认):从小到大排列。

·DESC:从大到小排列。

四、ORDER BY 与 LIMIT 结合使用

原理:如果包含 LIMIT 10,每个计算节点仅需将本地排序后的前 10 条数据发送给协调器。Coordinator 只需在极小的中间结果集中选取前 10 条,极大地降低了网络传输压力和内存需求。

— 执行高效的 Top 10 查询SELECT user_id, SUM(page_views) `sum`FROM web_statsGROUP BY user_idORDER BY `sum` DESC LIMIT 10;

五、避免无效排序

子查询忽略:TCHouse-X 通常会忽略子查询或视图定义内部的 ORDER BY。若要保证最终输出有序,必须将 ORDER BY 应用于最外层的 SELECT。

六、分页

虽然可以使用 LIMIT 与 OFFSET 实现分页,但在处理大表时,由于越往后的页面需要跳过的数据越多,效率会逐渐降低。

— 分页示例SELECT page_title FROM search_content ORDER BY page_title LIMIT 10 OFFSET 20; — 获取第 3 页数据

赞 (0)
上一篇 4天前
下一篇 4天前