当前位置: 首页 > news >正文

网站开发数据库技术宁波seo整体优化

网站开发数据库技术,宁波seo整体优化,海外网站推广,wordpress 4.8 pdf缩略图问题简述: 最近在工作中遇到了大数据量的查询场景, 日产100w左右明细, 会查询近90天内的数据, 总数据量约1亿, 业务要求支持分页查询与导出. 无论是分页或导出都涉及到深度分页查询, mysql通过limit/offset实现的深度分页查询会存在全表扫描的问题, 比如offset1000w, limit10…

问题简述:

最近在工作中遇到了大数据量的查询场景, 日产100w左右明细, 会查询近90天内的数据, 总数据量约1亿, 业务要求支持分页查询与导出.

无论是分页或导出都涉及到深度分页查询, mysql通过limit/offset实现的深度分页查询会存在全表扫描的问题, 比如offset=1000w, limit=10, 那么mysql会依次加载1000w条数据进行查找, 然后扔掉前1000w条, 然后返回找到的第1000w后的10条, 这种显然是傻瓜式的实现,显然会对内存和IO带来大量的消耗, 可想而知其耗时肯定会随着数据量的加大而上涨, 给个示例: 来源于[1]

问题原因是mysql针对这种深度分页的近似全表扫描的操作导致: 参考[2]:

那么如何优化呢? 确保深度分页时耗时稳定, 与页码无关, 与数据量规模无关:

  1. 前端加一些限制: 限定不能任意跳转, 只能进行上一页与下一页的翻页操作, 业务能接受这种逻辑
  2. 后端针对翻页查询操作, 会记录上一次的id最大值与最小值, 在查询时通过标签过滤的方式过滤掉已翻页的数据, offset始终值为0
  3. 针对导出逻辑, 则很简单, 都无需考虑上一页, 一直下一页翻页处理即可. 

这种处理也叫做标签记录法, 就是利用索引过滤来规避掉全表扫描问题的一种优化方式, 另外一种是子查询, 类似的操作, 只是即无需记录上次查询的结果, 每次查询时都重新查询下指定偏移量的最后一条记录, 将其ID作为过滤项或边界值, 然后进行查询, 本质是标签记录法, 换汤不换药

借用下[2]中的子查询的例子: 

select id,name,balance FROM account where id >= (select a.id from account a where a.update_time >= '2020-09-19' limit 100000, 1) LIMIT 10;

 我觉得还是标签记录法性能时最好的,  一次查询解决. 就是要想办法维护下边界值, 尽量避免随机跳转. 

另外近似深度分页的概念: 内存分页, 内存分页也是一种全表扫描的操作, 但是在应用层的过滤处理逻辑, 先获取全部数据, 然后在应用程序中对数据做处理, 数据量较小且sql逻辑复杂时会采取这种方式, sql中不建议加入太多代码逻辑, 调试与维护困难不说, 容易造成慢sql查询. 

参考: 

[1]:MySQL分页查询优化

[2]: MySQL深度分页-CSDN博客

http://www.dt0577.cn/news/39811.html

相关文章:

  • 可以做彩票广告的网站百度推广营销中心
  • 没有网站怎么做cpa长沙seo公司排名
  • 那个网站可以帮助做数学题刷推广链接的网站
  • 成都建设规划网站nba赛季排名
  • 网站手机开定制网站建设推广服务
  • 织梦汽车网站模板衡阳seo优化报价
  • 明星网站建设关键词检测工具
  • html5网站建设基本流程谷歌搜索引擎怎么才能用
  • 郑州网站建设汉狮广州营销型网站
  • 网站制作带模板破解版百度快照优化公司
  • 无极商城网站建设电脑培训速成班多少钱
  • 广州企业网络推广运营技巧seo外链建设方法
  • 网站建设表的设计推广优化网站
  • 近期即将上市的手机优化落实疫情防控
  • 网站网页设计要求凡科建站平台
  • 做网站准备什么问题nba新闻最新消息滚动
  • 合肥建设厅网站2023年最新时政热点
  • 免费搭建网站的平台外链网盘
  • 找做网站的公司需要注意什么搜索引擎推广案例
  • 政府网网站一般谁做的网站设计公司排行榜
  • 做网站竟然不知道cms郑州seo询搜点网络效果佳
  • 上海网站建设聚众网络聚名网域名注册
  • 采购网哪个平台比较好厦门专业做优化的公司
  • 彩票走势图网站建设公司快速建站
  • 做响应式网站的流程网站域名查询ip
  • wordpress彩色条企业网站优化工具
  • 中专网站建设与数据管理是什么我想做个网站怎么做
  • 曹县做网站网站策划报告
  • 如何做网站设计写软文推广
  • 网站建设需要哪些信息渠道销售怎么找客户