全网都是用id,再用limit,优化方案都是 指定id大于特定分页未知id...不切实际啊!
id自增int
key是char类型 xxxx-xxxx-xxxx-xxxx
排序字段是 项目结束时间
where条件是 各种状态判断,
业务场景: 一定要用时间排序,所以id是乱序的! 后面自动加进来的订单可能结束时间更早,id肯定是乱的,不能用id>特定id来分页,key又是不可抗不会变的string...
这种情况越靠后咋分页???
再加一点难度...还需要left join => group by...索引又废..
能用游标的前提就已经是不可随意指定排序条件了,常见的场景比如信息流这种。
你要是做个后台系统表格,二三十种查询条件外加十几个自定义排序的列,用游标干啥?
甚至即便是不可随意指定排序条件,如果你的表里一共就几十万这种数据量,LIMIT + OFFSET 也是完全能 hold 住。
真要有复杂排序需求的场景,而且数据量很大,就需要引入其他组件了,比如 ElasticSearch。
软件工程第一要义:没有银弹(这本书很好,我建议程序员们可以都读读)。不存在一个统一的方法能适用于各种条件的。