我有一個包含樣本的表格。插入的樣本已經按照時間戳自然排序。hsqldb:我是否必須通過ORDER BY來確保一致的選擇順序?
我的問題是這樣的 - 當我從表中選擇時是否必須使用ORDER BY子句來確保提取的樣本按時間戳排序?
我有一個包含樣本的表格。插入的樣本已經按照時間戳自然排序。hsqldb:我是否必須通過ORDER BY來確保一致的選擇順序?
我的問題是這樣的 - 當我從表中選擇時是否必須使用ORDER BY子句來確保提取的樣本按時間戳排序?
如果HSQLDB表T具有C列作爲主鍵,或者具有在該列上的任何索引,
SELECT FROM T ORDER BY C
將返回有序行,而不額外ORDER BY處理。
如果在選擇一個條件,這在不同的列使用索引,你仍然可以強制使用索引的ORDER BY:
SELECT FROM T WHERE <some condition> ORDER BY C USING INDEX
但在這種情況下,你只應如果表格的大部分行將被返回,請使用USING INDEX。否則,最好讓引擎使用其他索引來減少表掃描時間。
如果沒有用於ORDER BY的索引,則忽略USING INDEX。
使用順序,只是爲了更安全的一面。 – NINCOMPOOP
我仍然有興趣知道是否有必要。 – mark
我沒有發現它是必要的。但如果記錄數量很大,Order by子句可能會嚴重影響性能。 HSQLDB沒有有效地使用索引,這是我的經驗。 – NINCOMPOOP