需要帮助或建议对大量记录进行分页。
我有 400,000 条记录,每次分页时都会进行分页,并根据限制集获取设置记录。
在 6 万条记录会话值未存储后,我们尝试将所有记录添加到会话中(这不是好的选择)。
需要知道任何其他方法可以帮助对大量数据记录进行分页。
我可以为此使用 sphinx/memcache 吗?
那么问题是什么?数据库查询应该是命中数据库。有性能问题吗?可以通过适当的索引进行补救。即使您限制为 10-20 个结果,400k 也不是一个庞大的数据集。
EXPLAIN
将帮助您查看您的 sql 服务器在做什么。
如果分页正在刷新页面,您可能希望实现 AJAX 以获得更流畅的用户体验。
您可以同时使用 sphinx 或 memcached。Memcached 可能更容易实现,因为您可以在访问数据库之前先搜索缓存。我认为一些查询/数据库调整可以走很长的路。
您可以使用 AJAX 检索记录,例如一次 100 条记录
您可以使用 memcache 在内存中执行此操作,这可行,但可能会占用大量内存。
如果您的数据集有一个递增的键,使用时间或主键 auto_increment 字段,您可以执行如下所示的查询。
SELECT fieldlists FROM tablename WHERE key > $lastusedkey limit $limit
这将解决限制在执行分页的应用程序中可能导致的瓶颈,并且不需要您将整个数据库放入内存中。