当前位置:  开发笔记 > 后端 > 正文

分页非常大的数据集

如何解决《分页非常大的数据集》经验,为你挑选了1个好方法。

我在MySQL中有一个数据集,其中使用限制已经是一个昂贵的查询,并且找到结果的数量也是昂贵的.因此,我想避免做另一个查询来查找结果的数量.我不能使用MYSQL_CALC_FOUND_ROWS,因为限制在子查询中:

SELECT * FROM items,
(
  SELECT
    item_id
  FROM
    (etc)
  WHERE
    some.field=
  AND (etc)
  GROUP BY (something)
  ORDER BY (something_else) DESC
  LIMIT 15
) subset
WHERE item.id=subset.item_id

我可以离开连接项并取消子查询,然后能够使用MYSQL_CALC_FOUND_ROWS,但这非常非常慢.我已经尝试了所有索引优化,让我们假设它是不可能的.

这现在变得更像一个设计问题...... 当我不知道最后一页时,如何允许用户翻阅这些数据?我只知道他们是否走得太远(例如:查询没有返回结果).



1> Bill Karwin..:

以下是MySQL大师Baron Schwartz撰写的文章摘要:

http://www.mysqlperformanceblog.com/2008/09/24/four-ways-to-optimize-paginated-displays/

四种优化分页显示的方法

    在第一个查询中,获取并缓存所有结果.

    不要显示所有结果.甚至谷歌也不会让你看到百万分之一的结果.

    不显示总计数或其他页面的中间链接.仅显示"下一个"链接.

    估计有多少结果.再一次,谷歌这样做,没有人抱怨.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有