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

设计素材网站有哪些免费网站容量空间一般要多大

设计素材网站有哪些免费,网站容量空间一般要多大,网站建设 设计创意,临沂网站建设价格公司有个SQl根据时间判断是否变化进而更新到主表通知下游服务告知变化 首先看下优化前和优化后的sql: 优化前:执行很慢 UPDATE vrs_video SET updated_at now() WHEREvrs_video.id IN (SELECT DISTINCTvideo_id FROMvrs_play_source WHEREvrs_play_…

公司有个SQl根据时间判断是否变化进而更新到主表通知下游服务告知变化

首先看下优化前和优化后的sql:

优化前:执行很慢

UPDATE vrs_video 
SET updated_at = now() 
WHEREvrs_video.id IN (SELECT DISTINCTvideo_id FROMvrs_play_source WHEREvrs_play_source.updated_at > DATE_ADD( NOW(), INTERVAL - 5 MINUTE ))

优化后:速度很快

UPDATE vrs_video v
INNER JOIN (SELECT DISTINCTvideo_id FROMvrs_play_source WHEREvrs_play_source.updated_at > DATE_ADD( NOW(), INTERVAL - 5 MINUTE )) AS subquery ON v.id = subquery.video_id SET v.updated_at = NOW()

说明:vrs_video是视频表、vrs_play_source 是播放源表 如果播放源表变化那就更新到 视频表中,最后通过查询 视频表的变化 通知下游

实际上业务比这个复杂不止这一个sql,一个视频 他有剧集表、分类表、人物表、标签表等。需要把每个副表的变化都更新到主表,然后主表拿到更新的视频ID去通知下游。

执行顺序比较

优化前的SQL:

我们看下他的执行计划

执行顺序:

  • 扫描主表
    首先,数据库引擎扫描 vrs_video 表。根据执行计划,它使用了 PRIMARY 索引,可能会遍历大量行(计划中显示约 5702245 行)。

  • 执行依赖子查询
    对于 vrs_video 表中的每一行,都会对子查询

    select distinct video_id from vrs_play_source where vrs_play_source.updated_at > DATE_ADD(NOW(),INTERVAL -5 MINUTE)

    进行求值。执行计划中显示该子查询为 “DEPENDENT SUBQUERY”,这意味着它与外层查询有关联(尽管查询本身没有引用外层字段,但 MySQL 优化器可能判定其依赖性),可能在每行判断时重复计算或部分重复计算。

  • 条件判断与更新
    如果当前 vrs_video.id 在子查询返回的 video_id 集合中,则满足条件,接着执行更新操作,将 updated_at 字段设置为 NOW()

优化后的SQl执行顺序

  • 构造派生表(子查询)
    首先,执行派生子查询

    select distinct video_id from vrs_play_source where vrs_play_source.updated_at > DATE_ADD(NOW(),INTERVAL -5 MINUTE)

    该子查询的结果会被物化成一个临时表(或称派生表),通常数据量较小(如执行计划显示只有几行)。

  • JOIN 连接
    使用派生表与 vrs_video 表进行内连接,连接条件为 v.id = subquery.video_id。由于 vrs_video 表的主键索引被利用(执行计划中显示为 eq_ref),连接过程非常高效。

  • 更新操作
    对于连接成功的记录,直接更新 vrs_video 表中的 updated_at 字段为 NOW()

总结

  • 第一个 SQL:
    执行顺序为先扫描 vrs_video 表,然后对每一行执行依赖子查询进行判断,最后更新满足条件的记录。由于子查询被标记为“DEPENDENT”,可能会在外层每行判断时多次执行,从而影响效率。

  • 第二个 SQL:
    执行顺序是先独立执行子查询,将满足条件的 video_id 物化为一个临时表,再将该结果与 vrs_video 表进行高效的索引连接,最后更新匹配的记录。整体流程较清晰,且子查询只执行一次。

这种执行顺序的差异是性能差异的重要原因之一,尤其是在数据量较大的情况下,第二种写法往往会更高效。

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

相关文章:

  • 一个网站一级栏目招标代理公司注册
  • 旅游网站建设规划报告怎么写58同城做公司网站怎修改
  • 太原市网站制作wordpress 增加中文
  • 智能建站是什么网站的全栈建设
  • 山东省住房城乡建设部网站首页网站建设网站制作价格
  • 中山网站搜索引擎优化浏览有关小城镇建设的网站6
  • 创新的手机网站建设知乎推广和引流技巧
  • pc网站手机网站网站后台是做什么的
  • 简述织梦网站上传及安梅州正在建设高铁线路
  • 怎么用PS做珠宝网站秦皇岛网站开发
  • 福田网站建设标准数据软件工程学费
  • 一个简易网站怎么做室内装修设计说明
  • 查询域名的网站培训心得
  • 网站建设人力调配范文竞价单页网站策划设计制作
  • 承德建设网站公司济南网站建设(选聚搜网络)
  • 各购物网站销售特点百度指数分析报告
  • 网站集约化建设难点浏览器打不开wordpress
  • 网站后台下载器网站开发设计师
  • 网站的flash怎么做的网站开发为什么需要团队完成
  • 忘记网站后台用户名短视频营销常用平台有
  • 鹤壁市做网站销售客户管理软件哪个好
  • 网站建设方案案例厦门市建设局网站咨询电话
  • 临沂哪里做网站比较好深圳互联网设计开发
  • 建设专业网站运营团队百度快照优化培训班
  • 云服务器可以做网站生道网站建设平台
  • 建筑知识网站公司网站建设管理制度
  • 贵州住建设局官方网站中国建设网官网住房和城乡建设官网
  • 做乡镇网站岳阳有哪几家做网站的
  • 有些网站做不了seo深圳做地铁的公司网站
  • 自动写作文网站怎么样制作一个公众号