# 稳定返回结果的顺序

__*确保结果集的顺序*__

+ `ORDER BY`
+ 你要注意分布式系统的分布式行为

![left](./student-guide/diagram/tidb-computing-dist-sql-flow.drawio.png)

------------------------------------------------------------------------
在 SQL 的语义中,只有使用了 order by 语法才会保障结果集的顺序输出。而单机数据库由于数据都存储在一台服务器上,在不进行数据重组时,多次执行的结果往往是稳定的,有些数据库(尤其是 MySQL InnoDB 存储引擎)还会按照主键或索引的顺序进行结果集的输出。TiDB 是分布式数据库,数据被存储在多台服务器上,另外 TiDB 层不缓存数据页,因此不含 order by 的 SQL 语句的结果集展现顺序容易被感知到不稳定。想要按顺序输出的结果集,需明确地把要排序的字段添加到 order by 子句中,这符合 SQL 的语义。

从业务逻辑出发,保证 order by 的字段组合是唯一时,结果才能唯一。