我正在使用PHP和PostgreSQL创建一个Web应用程序。数据库太大而且有些种类 搜索需要花费大量时间来处理。
用户可以等待第一次搜索,但分页时很糟糕。我可以将结果集存储到会话变量中吗?
处理分页会很棒。
答案 0 :(得分:1)
是的,当然可以,但是有很多不同的结果集,在session_start上加载数据量会变得很麻烦。此外,相同的搜索可能由多个用户完成,导致重复(耗时)检索/大会话(每个页面加载需要更长时间)/更多存储空间。
如果数据的安全性足以存储在会话中,请查看APC或Memcached等缓存,以便使用有意义的密钥存储结果。这样,从数据库中提取负载,并且可以在用户之间共享搜索。
如果您有一个固定数量的分页项目,您甚至可以考虑在密钥中存储带有前缀或后缀的不同“页面”,因此您不必每次都选择结果的子集(即使用像'search:foo = bar | 1'/'search:foo = bar | 2'等密钥存储。