用于分页的MySQL查询性能

时间:2016-12-06 02:47:26

标签: mysql

好的,那么当它归结为mysql中的分页时,最佳做法是什么。让我说清楚一点,让我说在给定时间内我有2000条记录,还有更多的插入记录。而且我一次显示25个,我知道我必须使用限制来对记录进行分页。但是我应该对我的记录总数做些什么呢?每次用户点击请求接下来的25条记录时,我都会计算记录。请不要直接告诉我答案,而是指出正确的方向。谢谢!

2 个答案:

答案 0 :(得分:0)

最简单的解决方案是在插入新记录时继续正常使用结果集。据推测,您显示的每个页面都将使用如下所示的查询:

SELECT *
FROM yourTable
ORDER BY someCol
LIMIT 25
OFFSET 100

当用户来回翻页时,如果有新数据进入,则页面可能会改变以前的状态。从逻辑的角度来看,这并不是那么糟糕。例如,如果您有按字母顺序排列的产品列表并且出现了新产品,那么用户将以相当不错的方式接收此信息。

至于计数,只要有数据支持添加新页面,您的代码就可以允许移动到下一页。添加新记录可能意味着需要更多页面来覆盖整个表格,但它不应该影响用于确定何时停止允许页面的逻辑。

如果您的表具有表示添加记录的日期或时间戳列,那么您实际上可以将整个结果集限制为快照。在这种情况下,您可以阻止新数据通过给定会话进入。

答案 1 :(得分:0)

3个建议 1.仅刷新数据网格,同时通过ajax单击下一个按钮(或)将会话中的计数存储为选择的搜索参数。 2.使用高级的memcache,可以在所有用户之间共享。根据过滤器参数生成唯一键并保持计数。所以你不会打击数据库。添加新记录后,您需要清除现有的memcache密钥。这需要运行memache。 3.创建索引,如果您点击数据库以获取计数。对性能的影响不大。