【发布时间】:2016-08-13 03:30:52
【问题描述】:
我遇到了一个问题,我必须通过一个非常频繁更新的列(喜欢、点等)对 mysql 表进行排序并对其进行分页,我不能使用简单的基于限制的方法,因为它很有可能当用户到达第二页时,由于喜欢值的变化,排序顺序已经改变,我在互联网上阅读过使用基于光标的方法,但所有示例都使用一些固定列,如 ID 或日期时间。这并没有达到目的。
我目前正在从用户那里获取显示的 ID,并在 NOT IN 条件下使用它们来不选择先前显示的记录,但该解决方案在速度和优化方面感觉不正确。
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
如果您的结果集足够小,那么您可以发送整个表格并使用类似 datatables.net 的方式在客户端处理分页
-
感谢您的评论,我处理的表大约有 900k 行。
-
没有不混淆的解决方案。但是,喜欢的次数越多,订单频繁且发生重大变化的可能性就越小。
-
@Jakumi,我不确定我是否完全理解你所说的,你能解释一下吗?谢谢
-
一个相对简单的想法是对排名进行快照,并让用户携带最后一个快照的时间戳,直到他们决定更新。如果没有用户使用旧快照,您可以安全地删除它。然而,900k 行只是快照;o/
标签: mysql pagination innodb