ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql – 分页非常大的数据集

2019-08-27 20:16:31  阅读:181  来源: 互联网

标签:mysql pagination


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

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

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

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

解决方法:

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

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

四种优化分页显示的方法

>在第一个查询中,获取并缓存所有结果.
>不要显示所有结果.甚至谷歌也不会让你看到百万分之一的结果.
>不显示总计数或其他页面的中间链接.仅显示“下一个”链接.
>估计有多少结果.再一次,谷歌这样做,没有人抱怨.

标签:mysql,pagination
来源: https://codeday.me/bug/20190827/1744125.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有