存储查询搜索结果的记录ID以进一步浏览?

时间:2014-04-07 07:35:44

标签: php mysql sql

在我的webapp(PHP)中,我有一个脚本显示单个数据库记录的内容:view.php?id=n,其中 n 是记录的ID。

使用当前ID的递增/递减,页面上还有 Next Previous 链接(浏览记录而不返回记录列表)致电view.php

?id=$current_id-1 (Prev)
?id=$current_id+1 (Next)

现在我要实现一个搜索功能。现在鼓励 Next 上一页链接引导用户完成他最近的搜索结果,使上述机制变得无用。

我必须在当前会话中至少存储搜索结果的ID列表。拥有5000条记录,这意味着服务器必须为不使用过滤器的搜索查询的每个用户保存大约20K的数据(假设为32位整数)(比如在上次更改时对所有记录进行排序)。

这是一种正确的方式,在性能和内存使用方面是否可以接受,还是有其他方式?

2 个答案:

答案 0 :(得分:0)

如果只存储prev next的id,则它没有意义,因为您正在通过id从db获取记录,并且id可能是主键并已编入索引。但是,如果要存储key => valueID=>value(ID),则可以缓存它们而不是存储在会话中。因此,当用户单击prevnext时,您可以在不查询数据库的情况下使用ID从缓存中获取结果。在这种情况下,您需要在每个数据库更新

上刷新缓存

答案 1 :(得分:0)

对于这种情况,有一种非常方便的数据结构 - SplDoublyLinkedList。如果你没有遇到链接列表,这里有一个很好的explanation,上面有一些插图。

我不确定他们的内存占用量有多大,所以你需要先测试你的里程数。但是,它们可能比任何手工制作都快。

干杯。