hsqldb:我是否必须通过ORDER BY来确保一致的选择顺序?

时间:2013-04-02 10:39:34

标签: indexing hsqldb

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

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

2 个答案:

答案 0 :(得分:2)

关系数据库中的行是 NOT 排序(将它们视为一个篮子中的球。哪一个是“第一个”?)

only 方式(实际上, only )获得一致排序的结果是使用ORDER BY

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

答案 1 :(得分: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。