在Markus Winand的博客文章Pagination done the Postgresql way中,幻灯片22上显示以下内容:
select * from <table> where topic = 1234
and (date, id) < (prev_date, prev_id)
order by date desc, id desc
limit 10;
这在WHERE
子句中使用复合值(或“行值”),在2013年显然只有Postgres支持。通过正确的索引,这应该比OFFSET
/ LIMIT
反模式更有效。
有没有办法在sqlalchemy过滤器中执行这种类型的WHERE
子句?到目前为止,我的搜索只找到了有关复合键的信息。