开发者社区> 问答> 正文

关于用SQL处理超大分页?

关于用SQL处理超大分页?

展开
收起
可乐大侠 2021-10-01 16:41:42 1130 0
3 条回答
写回答
取消 提交回答
  • 即使是搬砖,也要有自己的姿势

    使用mysql原生分页关键字 limit 在数据量很大或者起始页很大的时候,性能都会骤降,一种行之有效的方法是换成id,前提是表的id字段是自增的,通过id主键索引直接跳转效率很高

    2021-10-12 18:30:31
    赞同 展开评论 打赏
  • 深分页问题就是要能有排除前面数据的能力,比如分页数据中有不重复且有序的字段,用这个字段将上一页的数据排除再limit,这样性能就提高了

    2021-10-11 16:02:09
    赞同 展开评论 打赏
  • 网络规划设计师、敏捷专家、CISP、ITSS服务经理、ACA全科目、ACP4项、ACE、CBP、CDSP、CZTP等。拥有 PRINCE2 Foundation/Practitioner、CCSK、ITIL、ISO27001、PMP等多项国际认证。 专利5+、期刊10+、知识产权师。核心期刊审稿人。

    您好,数据库层面,类似于select * from table where age > 20 limit 1000000, 10这种查询其实也是有可以优化的余地的;这条语句需要load 1000000数据然后基本上全部丢弃,只取10条当然比较慢;当时我们可以修改为select * from table where id in (select id from table where age > 20 limit 1000000, 10);这样虽然也load了一百万的数据,但是由于索引覆盖,要查询的所有字段都在索引中,所以速度会很快;同时如果ID连续的好,我们还可以select * from table where id > 1000000 limit 10,效率也是不错的,优化的可能性有许多种,但是核心思想都一样,就是减少load的数据; 解决超大分页其实主要是靠缓存,可预测性的提前查到内容,缓存至redis等K-V数据库中,直接返回即可。

    2021-10-01 16:43:13
    赞同 展开评论 打赏
问答分类:
SQL
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载