union-all-performance-tuning for mysql?

uklbhaso  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(227)

我使用下面的sql来获取 posts 按用户id为每个用户。

(select * from `posts` where `posts`.`user_id` in (?) limit 10 offset 10) 
union all (select * from `posts` where `posts`.`user_id` in (?) limit 10 offset 20)
union all (select * from `posts` where `posts`.`user_id` in (?) limit 10 offset 30)
union all (select * from `posts` where `posts`.`user_id` in (?) limit 10 offset 40)
union all (select * from `posts` where `posts`.`user_id` in (?) limit 10 offset 0)
union all (select * from `posts` where `posts`.`user_id` in (?) limit 10 offset 0)
union all (select * from `posts` where `posts`.`user_id` in (?) limit 10 offset 0)
union all (select * from `posts` where `posts`.`user_id` in (?) limit 10 offset 10)
union all (select * from `posts` where `posts`.`user_id` in (?) limit 10 offset 0)
union all (select * from `posts` where `posts`.`user_id` in (?) limit 10 offset 0)
union all (select * from `posts` where `posts`.`user_id` in (?) limit 10 offset 10)
union all (select * from `posts` where `posts`.`user_id` in (?) limit 10 offset 0)
union all (select * from `posts` where `posts`.`user_id` in (?) limit 10 offset 0)

这个 limit ? offset ? 部件用于为每个用户的帖子分页。
例如 limit 10 offset 20 意味着获得“每页10个职位和第3页”的具体用户。
我的问题是我是否有更好的解决方案而不是 union all 提高查询性能?显然这个sql有太多的子查询…
另外,这里是我的用例的上下文和需求。
一个查询同时获取用户和用户的帖子。
每个用户可以有多个帖子。
每个 ? 是一个不同的 user_id .
这个 limit ? offset ? 可以不同,但大多数情况下,每个用户的值相同。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题