更新时间:2025-03-13 GMT+08:00

Sort

算子说明

对底层节点返回的元组进行排序。Sort算子的作用是将查询结果按照指定的排序规则进行排序,然后返回有序的结果集。

典型场景

  • 当查询语句中包含order by子句时,GaussDB会在执行计划中选择sort算子来进行排序操作。
  • 采用MergeJoin来进行连接操作。

示例

示例:查询语句中包含ORDER BY子句。

--数据准备。 
gaussdb=# CREATE TABLE student(id integer, class_id integer, grade number); 
CREATE TABLE 
gaussdb=# INSERT INTO student VALUES(generate_series(1,50), 1, floor(100 * random())); 
INSERT 0 50 
gaussdb=# INSERT INTO student VALUES(generate_series(51,100), 2, floor(100 * random())); 
INSERT 0 50 
gaussdb=# INSERT INTO student VALUES(generate_series(101,150), 3, floor(100 * random())); 
INSERT 0 50 
gaussdb=# INSERT INTO student VALUES(generate_series(151,200), 3, floor(100 * random())); 
INSERT 0 50

--执行结果。 
gaussdb=# EXPLAIN SELECT * FROM student ORDER BY grade; 
                              QUERY PLAN
----------------------------------------------------------------------
 Streaming (type: GATHER)  (cost=14.18..14.62 rows=21 width=40)
   Merge Sort Key: grade
   Node/s: All datanodes
   ->  Sort  (cost=13.37..13.40 rows=21 width=40)
         Sort Key: grade
         ->  Seq Scan on student  (cost=0.00..13.13 rows=20 width=40)
(6 rows)

--删除。
gaussdb=# DROP TABLE student;

上述示例中,Sort算子输出信息如下所示。

信息名称

含义

Sort

算子的名称。

Sort Key

Sort算子排序的依据关键字。示例中为grade。