我有一张包含样品的表格。插入的样本已经按时间戳自然排序。
我的问题是这个 - 当我从表中选择时,我是否必须使用ORDER BY子句来确保所提取的样本按时间戳排序?
答案 0 :(得分:2)
关系数据库中的行是 NOT 排序(将它们视为一个篮子中的球。哪一个是“第一个”?)
only 方式(实际上, only )获得一致排序的结果是使用ORDER BY
。
您不能依赖联接的副作用group by
。 UNION
,索引检索或类似运算符。他们永远不会保证订单。除非您指定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。