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

东莞建设网站培训课程有哪些

东莞建设网站,培训课程有哪些,机械设备如何做网站,wordpress客户端5.8最近在工作中写SQL出现几次慢SQL的BUG,总结下来归根到底就是因为大表的原因~这表有多大呢,执行 select COUNT(1) FROM position 是出不来结果滴,每天保底新增1000条数据,可想而知有多大了,所以多次踩坑了这张表。所以…

最近在工作中写SQL出现几次慢SQL的BUG,总结下来归根到底就是因为大表的原因~这表有多大呢,执行 select COUNT(1) FROM  `position`  是出不来结果滴,每天保底新增1000条数据,可想而知有多大了,所以多次踩坑了这张表。所以,这里总结一下,希望大家以后在开发中都可以注意一下,废话不多说直接开始~~

案例一

SQL-1

SELECT DISTINCT CONCAT_WS('_', p.type, p.drive_license) AS type_drive_license
FROM (SELECT DISTINCT position_idFROM position_viewWHERE `date` > '2025-05-03'AND user_id = 1474358820237239206
) sub
INNER JOIN `position` p ON p.id = sub.`position_id`;

 SQL-2

SELECT DISTINCTCONCAT_WS('_', p.type, p.drive_license) AS type_drive_license
FROMposition_view pvINNER JOIN `position` p ON p.id = pv.`position_id`;
WHEREpv.`date` > '2025-05-03'AND pv.user_id = 1474358820237239206

 这两个SQL最大的区别就是第一个SQL首先通过子查询查询筛选出满足条件的在查询,第二个直接通过内连接直接查询满足条件的数据。看似都可以实现功能,但是第二个就出现了慢SQL的问题,因为大表进行内连接,可能会出现全表扫描。所以采用第一种SQL

推荐选择

  • 对于大表,推荐使用 第一条 SQL(子查询)
  • 对于小表或中间结果较小的场景,推荐使用 第二条 SQL(直接连接)

案列二

  SELECTtype,title,description,regionName,mobileFROM (SELECTp.`type`,p.`title`,p.`description`,r.`fullname` AS regionName,p.`mobile`,p.`create_time`,ROW_NUMBER() OVER (PARTITION BY p.`mobile` ORDER BY p.`create_time` DESC) AS rnFROMposition pINNER JOINregion r ON p.region_id = r.id<where>p.`status`='ONLINE'AND p.`create_time` > #{date}<if test="config.types != null and config.types.size() > 0">AND p.`type` IN<foreach collection="config.types" item="type" open="(" close=")" separator=",">#{type}</foreach></if><if test="config.sources != null and config.sources.size() > 0">AND p.`source` IN<foreach collection="config.sources" item="source" open="(" close=")" separator=",">#{source}</foreach></if></where>) AS subWHEREsub.rn = 1LIMIT #{config.queryCount}

性能提升原因分析(添加 AND p.create_time > #{date} 后)

核心原因:数据量级爆炸性减少

  1. 时间范围大幅缩小

    • 原始查询:需处理整个 position 表的历史数据(可能上亿条)

    • 添加条件后:仅处理最近 #{date} 之后的数据(可能仅几万条)

    • 效果:扫描行数从指数级降至线性级

  2. 窗口函数计算量骤减

    原始:需对全表手机号去重排序(海量排序+分组操作)

    • 添加条件后:仅需处理最近数据中的手机号

    • 效果:排序内存需求下降,避免磁盘临时文件

因为只需要查询1000条最新的数据,职位表每天都有新增1000条数据,所以只查询date天内的数据就可以,有效避免了慢SQL的问题。还有就是窗口函数很容易造成全表扫描,一定到关注性能

总结

在开发中,对于需要操作大表的SQL,特别要注意去正式环境运行一下SQL有没有SQL性能问题,上线之前规避问题,优化~~~

http://www.dtcms.com/wzjs/334968.html

相关文章:

  • 常用h5的制作工具百度热搜seo
  • 请人做网站交易平台刷关键词排名seo软件软件
  • 做vlogger的网站有哪些信息发布推广方法
  • 网站制作费用预算表windows10优化软件
  • 做内部网站cms网站建站教程
  • 风水网站建设的策划书百度站长平台快速收录
  • 网站上的图用美图秀秀做可以吗免费推广平台
  • 欧美真人做免费网站百度关键字
  • 中学生网站设计下载营销托管全网营销推广
  • 手机写网页怎么分析一个网站seo
  • 网站建设 紧急检查工作百度快照手机版
  • 网站建设怎么在png上写文字网络推广方案模板
  • 济南建站免费模板亚洲足球最新排名
  • 网站开发 流程图优化的近义词
  • 厦门网站建设公司推荐网络推广费用
  • 网站源码如何优化开发一个app价目表
  • asp.net做网站头部和尾部_都用什么来实现网络广告文案案例
  • pytson做网站安全吗营销技巧和营销方法视频
  • java做网站开发的流程百度优化大师
  • 建网站网络公司百度搜索关键词指数
  • 建设商务网站的费用新闻热点事件2021(最新)
  • 网站建设技巧百度云网盘下载
  • 从学习php到可以独立做网站需要多久seo教程排名第一
  • 浙江温州乐清疫情最新消息网站优化排名易下拉软件
  • 长春建站网站建设实时新闻热点
  • 曲靖市网站建设电商平台排名
  • 如何搭建网站的结构百度公司高管排名
  • 空间设计网站广东企业网站seo报价
  • 付费网站建设模板西安网站建设公司排行榜
  • wordpress不显示头像seo外链建设的方法有