其中每个用户Id对应用户发表的多篇文章(数量不确定),每个文章Id对应一篇文章
假设用户Id数量为100+,文章Id为5000+(指数不断增长中)
由于业务特殊性,必须通过用户Id与文章Id才能取得完整数据,请问在不改动数据提供者的情况下,如何优化获取数据的逻辑且保证取得的文章列表能以时间(文章发表时间)倒序分页?
1单表场景下
因为你这里userid过滤度相当高,结合你实际需求,你可以在userid,articleid上加一个复合索引即可,这种情况下如果不是极高的并发或者写入量太大扛千万到亿是没问题的
2分表
根据userid做hash后分片,索引依然如上,这样在正常高并发或数据量很大的情况下一般是没什么问题的,如果数据增量大则考虑一致性hash
复合索引+覆盖索引效果会更好(include所有SELECT的列)
是一个文章表.一个用户表.文章表有userid.然后要根据userid查询取文章表分页?
查询不涉及用户表,直接从文章表获取数据的
@JoiWilliam: 我也没说用户表啊..
文章表根据userid查询取分页?
一次性通过用户Id与文章Id分页获取数据..我都看不懂这句话是什么意思
@吴瑞祥: 就是通过全部的用户Id与文章Id做分页查询
@JoiWilliam: 如果是全部用户id了.那还传他干嘛.不就不用传了.
你的需求是用户列表展示每个用户的几篇文章?
@吴瑞祥: 需求要展示部分用户的所有文章(用户Id)和其他指定文章(文章Id)
@JoiWilliam: 用union吧.
select*from wenzhang where userid in (ids)
union select*from wenzhang where id in (ids)