为什么MongoDB的skip()使用起来如此之慢和糟糕,而MySQL的LIMIT如此之快?

 超级放开祢旳掱 发布于 2023-02-08 18:08

Mongo的skip()适用于小型集合,但是一旦你有几千条记录,它就开始变慢.

老实说,我想知道为什么NoSQL数据库中类似LIMIT的功能如此难以实现.

我一直在阅读的唯一"解决方案"是使用基于范围的查询.但对于很多不可行的解决方案.

1 个回答
  • MySQL的LIMIT大偏移也有类似的挑战.StackOverflow的一些例子:

    如何在LIMIT子句中使用大偏移量加速MySQL查询?

    为什么MYSQL更高的LIMIT偏移会降低查询速度?.

    具有大跳过/偏移值的限制查询的效率的基本问题是,为了使数据库查询到达可以开始返回记录的点,必须跳过大量索引条目.对于具有活动写入(插入/更新/删除)的数据库,如果不隔离查询或缓存结果,这也可能导致一些有趣的调页副作用.

    基于范围的分页是一种可以利用索引的更有效的方法,但正如您所指出的,它可能不适合所有用例.如果您经常需要跳过数千条记录并发现它太昂贵,您可能需要调整数据模型,添加一些缓存或在用户界面中添加使用限制.

    例如,在通过Google搜索结果进行通用术语分页时,可能会有数亿个结果.如果您一直点击页面,您最终会发现UI限制为1,000个结果(可能相当于50-100页,具体取决于过滤的结果数量).另一种流行的UI方法是Continuous Scrolling,它避免了一些常见的分页问题(尽管会产生其他可用性挑战).

    2023-02-08 18:11 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有