2

我有一张包含样本的表格。插入的样本已经按时间戳自然排序。

我的问题是——当我从表中选择时,我是否必须使用 ORDER BY 子句来确保获取的样本按时间戳排序?

4

2 回答 2

2

关系数据库中的行未排序(将它们想象成篮子中的球。哪个是“第一个”?)

获得一致排序结果的唯一方法(真的,唯一ORDER BY的)是使用.

您不能依赖连接的副作用,group by. UNION, 索引检索或类似的运算符。他们永远不会保证订单。DBMS 可以自由选择以它认为最快的顺序返回行,除非您指定ORDER BY.

于 2013-04-02T10:43:59.217 回答
2

如果 HSQLDB 表 T 有一个列 C 作为主键,或者在该列上有任何索引,

SELECT FROM T ORDER BY C

将返回有序行而无需额外的 ORDER BY 处理。

如果 select 上有一个条件,它使用不同列上的索引,您仍然可以强制使用索引进行 ORDER BY:

SELECT FROM T WHERE <some condition> ORDER BY C USING INDEX

但在这种情况下,如果将返回表的大部分行,则应仅使用 USING INDEX。否则最好让引擎使用其他索引以减少表扫描时间。

如果没有用于 ORDER BY 的索引,则忽略 USING INDEX。

于 2013-04-03T20:39:36.140 回答