1
我想查詢的順序,天行:今天指數由升日期但過去的日期顯示最後
- 未來
- 過去
目前我正在做一個簡單的查詢是這樣的:
getLatest(howMany, offset) {
return knex
.select('*')
.from('event')
.orderBy('start_time', 'asc')
.offset(offset)
.limit(howMany);
}
但是問題在於它首先顯示過去的時間戳。我知道我可以得到像這樣的過去的記錄:
knex('event')
.select('id')
.whereRaw("start_time < NOW()")
更新:有沒有辦法使這與偏移工作?每次用戶到達底部以獲取更多事件時,該查詢都會運行無限的提要。索引可能?
這是我的架構:
knex.schema.createTable('event', (table) => {
table.increments().primary();
table.dateTime('start_time').notNullable();
})
有沒有一種方法,使與補償工作的呢?當用戶到達底部以獲取更多事件時,此查詢將運行無限的提要。我感覺這需要某種索引,但我以前從未使用索引。 –
@VladyVeselinov每一本優化書中都有一個關於限制/偏移量的特殊章節。這個主題是一個很好的[slideshare](https://www.slideshare.net/MarkusWinand/p2d2-pagination-done-the-postgresql-way)。 但是對於我來說,我覺得這就像是「上級」的先進水平。對於小型項目(低於千兆字節/兆字節的數據) - 極限/偏移量工作得很好。 另外,postgres中有一個'current_date'。 'current_timestamp'返回當前時間,'current_date' - 當天的開始時間。 – coockoo
我同意@coockoo寫的大部分內容,除了我認爲索引和鍵集分頁是每個開發人員都應該理解的內容。由於這個查詢只是在一個表上,而數據庫是PostgreSQL,所以你應該試試看。唯一的困難是表達式'start_time