mysql 根据一个表的数据更新另一个表

表A有字段aid和t1表B有字段aid和t2(2个aid内数据相同)当t2的数字大于5时修改与其aid相同的表A中的t1为2... 表A 有字段aid 和 t1 表B 有字段aid 和 t2(2个aid内数据相同) 当t2的数字大于5时 修改与其aid相同的表A中的t1为2 展开
 我来答
爱可生云数据库
2020-11-19 · MySQL开源数据库领先者
爱可生云数据库
爱可生,金融级开源数据库和数据云服务整体解决方案提供商;优秀的开源数据库技术,企业级数据处理技术整体解决方案提供商;私有云数据库云服务市场整体解决方案提供商。
向TA提问
展开全部

本期我们用 MySQL 提供的 DBUG 工具来研究 MySQL 的 SQL 处理流程。

起手先造个实例

这里得稍微改一下实例的启动文件 start,将 CUSTOM_MYSQLD 改为 mysqld-debug:

重启一下实例,加上 debug 参数:

我们来做一两个实验,说明 DBUG 包的作用:

先设置一个简单的调试规则,我们设置了两个调试选项:

  • d:开启各个调试点的输出

  • O,/tmp/mysqld.trace:将调试结果输出到指定文件

  • 请点击输入图片描述

    然后我们创建了一张表,来看一下调试的输出结果:

    请点击输入图片描述

    可以看到 create table 的过程中,MySQL 的一些细节操作,比如分配内存 alloc_root 等

    这样看还不够直观,我们增加一些信息:

    请点击输入图片描述

    来看看效果:

    请点击输入图片描述

    可以看到输出变成了调用树的形式,现在就可以分辨出 alloc_root 分配的内存,是为了解析 SQL 时用的(mysql_parse)

    我们再增加一些有用的信息:

    请点击输入图片描述

    可以看到结果中增加了文件名和行号:

    请点击输入图片描述

    现在我们可以在输出中找一下统计表相关的信息:

    请点击输入图片描述

    可以看到 MySQL 在这里非常机智,直接执行了一个内置的存储过程来更新统计表。

    沿着 que_eval_sql,可以找到其他类似的统计表,比如下面这些:

    请点击输入图片描述

    请点击输入图片描述

    本次实验中,我们借助了 MySQL 的 DBUG 包,来让 MySQL 将处理过程暴露出来。MySQL 中类似的技术还有不少,比如 performance_schema,OPTIMIZER_TRACE 等等。

    这些技术将 MySQL 的不同方向的信息暴露出来,方便大家理解其中机制。

鄢绿竺元英
2013-09-05 · TA获得超过4136个赞
知道小有建树答主
回答量:3128
采纳率:32%
帮助的人:198万
展开全部
mysql下可以直接内联接进行update效率要高很多:
update
表A
a1
inner
join
表B
a2
using(aid)
set
a1.t1=2
where
a2.t2>5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式