昆明网站建站平台网站链轮内有死链

张小明 2025/12/31 7:40:40
昆明网站建站平台,网站链轮内有死链,网上免费开店怎么开,注册公司费用流程图文章目录概述对比工作原理性能对比查询性能对比数据库负载对比代码示例传统分页示例请求响应SQL执行游标分页示例首次请求#xff08;无游标#xff09;响应后续请求#xff08;使用游标#xff09;SQL执行游标分页最佳实践总结选择建议概述 对比 特性传统分页游标分页定…文章目录概述对比工作原理性能对比查询性能对比数据库负载对比代码示例传统分页示例请求响应SQL执行游标分页示例首次请求无游标响应后续请求使用游标SQL执行游标分页最佳实践总结选择建议概述对比特性传统分页游标分页定义使用 OFFSET 和 LIMIT 参数通过跳过前面的记录来获取指定页的数据。使用一个游标cursor来标记当前位置基于游标位置获取后续数据。特点1. 需要知道总记录数COUNT查询2. 使用页码page和每页数量size3. 可以跳转到任意页面1. 不需要总记录数2. 使用游标cursor和每页数量size3.只能顺序翻页不能跳转优点1. 可以跳转页面用户可以直接跳转到第N页2. 显示总数可以显示总记录数和总页数3. 实现简单逻辑直观易于理解4. 兼容性好所有数据库都支持OFFSET和LIMIT1.性能优秀 不需要COUNT(*)查询 查询速度稳定不受数据量影响 使用索引高效定位2.数据一致性 基于游标位置查询不受数据变化影响 不会出现重复或遗漏数据3.资源消耗低 不需要统计总数 查询效率高缺点1.性能问题COUNT(*)查询在大数据量下很慢OFFSET越大查询越慢需要跳过更多记录2.数据一致性问题 在翻页过程中如果有数据新增或删除可能导致- 重复数据同一数据出现在两页- 遗漏数据某些数据永远不会被看到1. 不能跳转页面只能顺序翻页不能直接跳转到第N页2. 显示总数无法显示总记录数和总页数3. 实现复杂需要处理游标编码/解码4. 游标管理需要确保游标的唯一性和稳定性应用场景1.需要显示总数和总页数 商品列表需要显示共1000件商品 订单列表需要显示共50页2.需要跳转页面 用户可以输入页码跳转 需要显示页码导航1, 2, 3…3.数据量不大 数据量在10万以内 查询频率不高4.管理后台 管理员需要查看总数 需要跳转到指定页面1.大数据量场景 数据量超过10万条 需要高性能查询2.移动端列表 无限滚动加载 不需要显示总数3.实时性要求高 数据频繁变化 需要保证数据一致性4.C端应用 用户主要浏览最新数据 不需要跳转到历史页面5.时间线/动态流 微博、朋友圈等时间线 订单列表按时间排序工作原理-- 先查询总数SELECTCOUNT(*)FROMtrade_orderWHEREuser_idxxx;-- 第一页page1, size10SELECT*FROMtrade_orderWHEREuser_idxxxORDERBYcreate_timeDESCLIMIT10OFFSET0;-- 第二页page2, size10SELECT*FROMtrade_orderWHEREuser_idxxxORDERBYcreate_timeDESCLIMIT10OFFSET10;执行流程执行COUNT(*)查询获取总记录数根据页码计算OFFSET (page - 1) * size执行主查询跳过OFFSET条记录返回当前页数据和总数-- 第一页无游标SELECT*FROMtrade_orderWHEREuser_idxxxORDERBYcreate_timeDESC,idDESCLIMIT11;-- 查询11条用于判断是否有更多数据-- 第二页使用游标SELECT*FROMtrade_orderWHEREuser_idxxxAND(create_time2025-12-16 10:00:00OR(create_time2025-12-16 10:00:00ANDidxxx-uuid))ORDERBYcreate_timeDESC,idDESCLIMIT11;执行流程如果有游标解码游标获取createTime和id添加游标条件create_time cursor.createTime OR (create_time cursor.createTime AND id cursor.id)查询size 1条数据多查1条用于判断是否有更多数据如果返回size 1条说明还有更多数据返回前size条并生成下一个游标如果返回 ≤size条说明没有更多数据性能对比查询性能对比说明传统分页的COUNT(*)查询时间随数据量线性增长传统分页的OFFSET越大查询越慢游标分页性能稳定不受数据量和页码影响数据库负载对比操作传统分页游标分页每次查询SQL数量2条COUNT SELECT1条SELECTCOUNT查询需要全表扫描或索引扫描不需要OFFSET操作需要跳过N条记录不需要索引利用部分利用完全利用代码示例传统分页示例请求POST /api-portal/trade/order/page { page: 2, size: 10, status: 10, createTime: [2025-11-16 00:00:00, 2025-12-16 00:00:00] }响应{ code: 0, data: { list: [...], total: 1000, page: 2, size: 10, pages: 100 } }SQL执行-- 1. 查询总数 SELECT COUNT(*) FROM trade_order WHERE user_id xxx AND status 10 AND create_time BETWEEN 2025-11-16 AND 2025-12-16; -- 2. 查询数据 SELECT * FROM trade_order WHERE user_id xxx AND status 10 AND create_time BETWEEN 2025-11-16 AND 2025-12-16 ORDER BY create_time DESC LIMIT 10 OFFSET 10;游标分页示例首次请求无游标POST /api-portal/trade/order/cursor-page { size: 10, status: 10, createTime: [2025-11-16 00:00:00, 2025-12-16 00:00:00] }响应{ code: 0, data: { list: [...], nextCursor: MjAyNS0xMi0xNlQxMDowMDowMHw2ZTdhNTVlYi0zMzc0LTRjMDYtYmEzZi1mZGUwMmU5MGU5MWU, hasMore: true } }后续请求使用游标POST /api-portal/trade/order/cursor-page { cursor: MjAyNS0xMi0xNlQxMDowMDowMHw2ZTdhNTVlYi0zMzc0LTRjMDYtYmEzZi1mZGUwMmU5MGU5MWU, size: 10, status: 10, createTime: [2025-11-16 00:00:00, 2025-12-16 00:00:00] }SQL执行-- 查询 size 1 条数据 SELECT * FROM trade_order WHERE user_id xxx AND status 10 AND create_time BETWEEN 2025-11-16 AND 2025-12-16 AND (create_time 2025-12-16 10:00:00 OR (create_time 2025-12-16 10:00:00 AND id xxx-uuid)) ORDER BY create_time DESC, id DESC LIMIT 11;⚠️需要注意的问题游标设计游标必须唯一且稳定使用createTime id组合游标字段必须有索引使用 Base64 编码保护游标排序字段必须使用唯一字段作为排序依据如id避免使用可能重复的字段如createTime单独排序游标失效如果数据被删除游标可能失效需要处理游标解析失败的情况关键字查询JOIN 查询时需要注意性能使用DISTINCT去重游标分页最佳实践✅推荐做法游标格式// 使用 createTime|id 格式Base64编码 cursor Base64.encode(2025-12-16T10:00:00|uuid-string)排序规则ORDER BY create_time DESC, id DESC -- 确保排序的唯一性和稳定性游标条件WHERE (create_time cursor.createTime OR (create_time cursor.createTime AND id cursor.id))判断是否有更多数据// 查询 size 1 条 ListOrder orders query(size 1); boolean hasMore orders.size() size; if (hasMore) { orders orders.subList(0, size); nextCursor createCursor(orders.get(size - 1)); }总结选择建议场景推荐方案原因移动端列表无限滚动游标分页性能好数据一致管理后台需要总数传统分页需要显示总数和跳转大数据量10万游标分页性能优势明显小数据量10万传统分页实现简单实时数据流游标分页数据一致性好需要跳转页面传统分页游标分页不支持
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站建设最新流行魅族的网站建设与安全

在任何可靠的数据恢复策略中,维护原始内容的完整性被视为首要任务之一。为确保信息有效且可信,必须对其进行全面保护,防止任何可能的篡改,包括在数据检索过程中。挑战在于,即使仅仅将驱动器连接到计算机这样的操作&…

张小明 2025/12/25 22:39:51 网站建设

惠州哪个房地产网站做的比较好100件创意产品设计方案

视频演示 基于深度学习的遥感地面物体检测系统 1. 前言​ 遥感地面物体检测在城市规划、交通监控、环境监测及农业管理等领域具有重要应用价值。传统基于人工解译或经典图像处理的方法,面对高分辨率遥感影像中目标尺度多变、背景复杂、分布密集等挑战,往…

张小明 2025/12/25 22:39:50 网站建设

网站建设 验收意见wp博客怎么改wordpress

手机号关联QQ号快速查询完整指南:3分钟找回丢失账号 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 还在为忘记QQ号而烦恼吗?手机号查QQ号工具帮你轻松解决!这个基于Python3开发的高效查询工具&am…

张小明 2025/12/25 22:39:50 网站建设

网站建设忄金手指花总网页设计形考作业2

本地部署 LLaMA-Factory 并微调 Qwen2.5 模型 在大模型落地日益迫切的今天,如何快速、低成本地将通用语言模型适配到特定业务场景,成了开发者面临的核心挑战。传统的全参数微调动辄需要数张高端 GPU 和海量计算资源,而轻量级微调技术如 LoRA…

张小明 2025/12/25 22:39:52 网站建设

企业网站建设市场分析外贸怎么用网站开发新客户

EmotiVoice能否用于广播级音频制作?质量评估 在现代广播内容生产中,时间就是生命线。一档早间新闻节目因主持人突发状况无法到场,传统流程可能意味着紧急协调替补、重写稿子甚至临时调整编排——但如今,一些电台已经开始尝试另一种…

张小明 2025/12/25 22:39:55 网站建设

沈阳做网站培训一个网站做三页是什么意思

Annotorious快速集成图像标注功能的完整指南 【免费下载链接】annotorious Add image annotation functionality to any web page with a few lines of JavaScript. 项目地址: https://gitcode.com/gh_mirrors/an/annotorious 想要为您的Web应用添加专业的图像标注功能&…

张小明 2025/12/25 22:39:54 网站建设