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