Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 您更喜欢哪种方法来查询用户社交媒体订阅源中的下一组帖子?_Mysql_Innodb_Mariadb - Fatal编程技术网

Mysql 您更喜欢哪种方法来查询用户社交媒体订阅源中的下一组帖子?

Mysql 您更喜欢哪种方法来查询用户社交媒体订阅源中的下一组帖子?,mysql,innodb,mariadb,Mysql,Innodb,Mariadb,背景: 这是android应用程序的一个例子 每个用户都有一个帖子提要——想想推特吧 我的用户_提要表存储在一个MariaDB数据库中 该表使用InnoDBstorage引擎 用户订阅源表: 现在,我使用此SQL查询获取用户的提要: SELECT * FROM user_feed WHERE user_id = 29 ORDER BY date_created DESC LIMIT 40 我需要一个查询,以便从user_提要表中获取下一组40篇文章,但问题是40篇文章和41篇文章可能同时插入,

背景:

这是android应用程序的一个例子 每个用户都有一个帖子提要——想想推特吧 我的用户_提要表存储在一个MariaDB数据库中 该表使用InnoDBstorage引擎 用户订阅源表:

现在,我使用此SQL查询获取用户的提要:

SELECT * FROM user_feed WHERE user_id = 29 ORDER BY date_created DESC LIMIT 40
我需要一个查询,以便从user_提要表中获取下一组40篇文章,但问题是40篇文章和41篇文章可能同时插入,39篇、42篇文章可能也是如此

另一个问题是,我不能使用LIMIT 41,80,因为当用户需要接下来的40篇文章时,可能已经有更多的文章添加到了他们的提要中,所以他们从第一次查询中收到的第40篇文章可能不是其他尝试中查询结果中的第40篇文章

查询下一个集合的方法:

具有唯一的自动递增索引列。因此,为了查询接下来的四十篇文章,我将使用

从索引<:post40的用户订阅源中选择*索引限制40

问题在于,每次将post或repost添加到user_提要表时,索引都会增加。这意味着每次将帖子添加到用户的提要时,句号都是。即使是5000个只关注200人的用户,这个数字似乎也会迅速增加

同上,但每个用户的提要都有自己的增量列。我必须自己记录这个身份证。每当一篇文章被添加到一个特定用户的提要中时,他们的提要的最高索引号就会被抓取,为该帖子设置,并递增,以便下一篇文章没有相同的索引。 问题是我觉得他们的解决方案更简单

与两个基本相同,但我在内存中的列表中跟踪每个用户提要的最高索引,而不是在用户表中的列中

使用:

从创建日期<:post40DateCreated LIMIT 40的用户订阅源中选择* 并发送用户从第一个查询收到的帖子的帖子id,这些帖子的创建日期与GET请求中的post 40相同,并确保第二个查询不包含这些帖子id-在请求中向上述查询添加帖子id帖子id


有人认为他们有更好的解决方案吗?

插入和删除都会导致用户看到的东西打嗝。另外,通过使用偏移量,性能可能很差,甚至很糟糕

是的,记住你停下来的地方,并将其用于“下一步”按钮,而不是页码。创建日期中是否存在重复值

看我的

SELECT * FROM user_feed WHERE user_id = 29 ORDER BY date_created DESC LIMIT 40