`

TODO:数据库优化之分页

阅读更多

TODO:数据库优化之分页

本文的例子是以MongoDB数据库为准,其它数据库各位也可以举一反三进行优化。

在MongoDB中分页使用

a.skip(n)跳过前n个匹配的文档;

b.limit(m)返回m个结果,要是匹配的结果不到m个,则返回匹配数据量的结果,m是指定上限数量,而不是下限数量;

c.sort({“name”: 1,”address”:-1}),1表示升序,-1表示降序。

使用skip跳过少量的文档还可以。但是数据量非常多的话,skip就会变得非常慢,每个数据库都会有这种情况,所以要尽量避免过多的使用skip。那要怎么做分页,我们可以利用上次的结果来计算下次的查询。

1.使用skip的分页

Page1 = db.user.find({}).limit(100)

Page2 = db.user.find({}).skip(100).limit(100)

Page3 = db.user.find({}).skip(200).limit(100)

2.利用上次的结果来计算下次的查询,按时间戳(timestamp)排序

获取第一页

Page1 = db.user.find({}).sort({“timestamp”: -1}).limit(10)

获取当前页面的最后一条记录的时间戳lasttimestamp,

根据lasttimestamp进行查询下一页数据

Nextpage=db.user.find({“timestamp”:{“$gt”:lasttimestamp}}).sort({“timestamp”: -1}).limit(10)

这样查询就没有使用到skip,但是要确保timestamp唯一约束确保文档中的数据没有相同的值。


wxgzh:ludong86

qrcode_for_gh_6bb1f39ae99c_258-1
0
0
分享到:
评论

相关推荐

    wicket-todo:用 wicket 做 todo

    优化页面性能,如使用分页和缓存策略,提高用户体验。 9. **部署**:最后,将应用程序部署到合适的服务器环境,如Tomcat或Jetty,让用户可以在线访问和使用。 通过以上步骤,我们就成功地用Apache Wicket构建了一...

    Todo_app:一个简单的应用程序也可以提高您的效率

    同时,为了优化性能,可以使用缓存策略减少数据库查询,或者实施分页来避免一次性加载过多任务。 **前端技术** 尽管主要关注PHP后端,但Todo_app的用户体验同样重要。前端可能使用HTML、CSS和JavaScript,为用户...

    Hotels_Server:酒店预订系统后台管理系统

    ToDo:随后可能会实现MVC框架优化。客户端接口想实现缓存出来,当客户端请求的数据存在于缓存的时候直接从缓存中读取。 如果有不懂的地方可以加入QQ交流群讨论: 。这个QQ群讨论技术范围包括:i

    Android软件源码使用自定义日历的简洁TODO备忘录

    在Android开发中,自定义日历的实现是一个常见的需求,特别是在构建待办事项(TODO)或日程管理应用时。本篇文章将详细讲解如何在Android软件中利用源码创建一个自定义的日历功能,帮助用户更高效地管理他们的任务和...

    fullstack-apollo-express-mongodb-boilerplate::collision:具有Apollo,Express和MongoDB样板项目的复杂GraphQL

    [TODO:编写迁移教程] 通用全栈存储库系列: 服务器应用程序: 客户应用: 客户端+服务器功能 使用Apollo Client进行React(create-react-app) 查询,变异,订阅 带有Express和Apollo服务器的Node.js 基于光标的...

    mean_to_do:使用MEAN堆栈构建的ToDo应用

    优化性能,比如使用分页、过滤和排序功能。 7. **部署**:将应用部署到云服务器或平台,如Heroku或AWS,使应用可在线访问。 在"mean_to_do-master"这个压缩包中,可能包含了项目的所有源代码,包括服务器端的Node....

    CRUD-Note-ToDo-List-

    - **性能优化**:合理设计数据库表结构,使用索引提升查询速度,优化SQL语句,避免全表扫描。 - **版本控制**:使用版本控制系统如Git管理代码,便于协同开发和追踪代码变更。 6. **Java技术栈**: - **Spring ...

    分库分表shardingjdbc

    - **分页**:探讨在分片环境下实现分页查询的最佳实践。 - **解析器**:如何配置 SQL 解析器以适应不同的数据库方言。 - **RDL**:介绍资源定义语言,用于描述数据库集群的配置。 #### 七、分布式事务 - **...

    小程序-todo list.zip

    在本项目中,我们关注的是一个名为"小程序-todo list.zip"的压缩包,它包含了一个小程序,专门用于实现待办事项(Todo List)的功能。这个小程序可能涉及到多个技术领域,如前端开发、数据结构以及用户交互设计。...

    django_todo_app

    【django_todo_app】是一个基于Python的Django框架构建的待办事项应用实例。...同时,这也是一个很好的起点,可以帮助你进一步探索更复杂的功能,如自定义用户模型、分页、过滤器、缓存和性能优化等。

    beego中文开发文档

    - 设计理念源于tornado、sinatra和flask等知名框架,但在Go语言特性的基础上进行了优化,比如利用了接口(interface)和结构体(struct)的嵌入式等特性。 - **框架架构特点** - **模块化设计**:beego采用高度解耦的...

    待办事项清单

    在IT行业中,待办事项清单(Todo List)是一种常见的应用,它可以帮助用户组织日常任务,提高工作效率。在本例中,我们关注的是一个基于PHP实现的待办事项清单项目。PHP是一种广泛使用的开源服务器端脚本语言,尤其...

    superxschool

    10. **构建与部署**:项目可能使用Webpack或Gulp等工具进行代码打包和优化,然后通过CDN或者FTP等方式部署到服务器,使用户能够访问。 以上是对"superxschool"项目可能包含的JavaScript技术及其应用的详细解析,...

Global site tag (gtag.js) - Google Analytics