SQL - 维护实时更改时对数据进行分页的排序顺序

时间:2012-09-21 23:31:15

标签: sql pagination real-time

我实现了一个以分页格式显示数据的php页面。我的问题是这些数据实时更改,因此当用户请求下一页时,我提交最后一个id并执行查询以从最后一个id顺序检索更多10行,该值实时更改值。例如,我有20行:

Id 1    col_real_time 5
Id 2    col_real_time 3 
Id 3    col_real_time 11

我按升序排序col_real_time的数据,结果是

id 2, id 1, id 3

现在,在用户发送下一页请求之前,实时id 2在col_real_time 29中更改,用户现在发送下一个结果的请求,因为id 2现在是29,他已经看到了。

我该怎么办?

现在实时更改ID 2

2 个答案:

答案 0 :(得分:2)

如果您不希望数据显示为更改为用户,则基本上必须拍摄数据的快照。这不是您可以在SQL中非常有效地执行的操作,因此我建议将整个结果集下载到可以跨页面保存的PHP会话变量中。这样,您可以按需获取行。有些Javascript小部件可以有效地执行相同的操作,但会将整个结果集发送到客户端,如果您有大量数据,这是一个坏主意。

这不像纯SQL分页那么容易,因为当不再需要时,你必须负责清理存储的var。否则,你很快就会耗尽内存。

答案 1 :(得分:2)

如果你只有几页,你可以:

  1. 将其保存到会话并通过它进行翻页,而不是返回到 数据库服务器。

  2. 将其保存到JSON对象列表并使用Jquery读取它和页面 在它上面。

  3. 将其保存到临时表中,表示生成时间戳,user_id和 session_id,以及它上面的页面。