好的,那么在mysql中进行分页的最佳实践是什么呢?让我说得更清楚,假设在给定的时间,我有2000条记录,还有更多的记录被插入。我一次显示25条记录,我知道我必须使用limit来对记录进行分页。但是对于我的记录总数,我应该怎么做呢?每次用户点击请求下25条记录时,我都要计算记录数吗?请不要直截了当地告诉我答案,而是给我指出正确的方向。谢谢!
发布于 2016-12-06 10:53:55
最简单的解决方案是在插入新记录时继续正常使用结果集。据推测,您显示的每个页面都将使用如下所示的查询:
SELECT *
FROM yourTable
ORDER BY someCol
LIMIT 25
OFFSET 100当用户来回翻页时,如果有新数据进入,则页面可能会与以前不同。从逻辑的角度来看,这并不是那么糟糕。例如,如果您有一个按字母顺序排列的产品列表,并且出现了一个新产品,那么用户将以一种相当好的方式收到此信息。
至于计数,您的代码可以允许移动到下一页,只要那里的数据支持添加新页面。添加新记录可能意味着需要更多的页面来覆盖整个表,但这不应该影响用于确定何时停止允许页面的逻辑。
如果您的表有一个日期或时间戳列来表示添加记录的时间,那么您实际上可以将整个结果集限制为一个及时的快照。在这种情况下,您可以防止新数据通过给定的会话进入。
发布于 2016-12-06 12:05:40
3建议1.仅刷新数据网格,同时通过ajax (或)在会话中存储所选搜索参数的计数。2.使用高级的memcache,可以在所有用户之间共享。根据过滤参数生成唯一密钥,并保留计数。这样你就不会碰到数据库。当添加新记录时,您需要清除现有的memcache键。这需要运行memache。3.创建一个索引,如果你点击了db来单独获取计数。这对性能不会有太大影响。
https://stackoverflow.com/questions/40987010
复制相似问题