互联网服务

两个SQL语句比较,哪种更优?

如下另个语句
update t1 set (a1,b1) = (select a2,b2 from t2 where t1.c1 = '2008-05-31' and t1.d1 = t2.d2) where t1.c1 = '2008-05-31' and t1.d1 in (select d2 from t2)update t1 set (a1,b1) = (select a2,b2 from t2 where t1.d1 = t2.d2) where t1.c1 = '2008-05-31' and t1.d1 in (select d2 from t2)其中c1,d1为t1的索引,d2为t2的主键。sql执行时先ixscan t1表找到符合条件的记录,再去连表t2,还是先t1与t2表内连接,然后再根据t1表的条件筛选?这两句sql哪个性能更优?
参与8

7同行回答

1523626069815236260698研发工程师南京某软件科技公司
UPDATE t1   SET (a1, b1) =          (SELECT a2, b2             FROM t2            WHERE t1.c1 = '2008-05-31' AND t1.d1 = t2.d2) WH...显示全部
UPDATE t1
   SET (a1, b1) =
          (SELECT a2, b2
             FROM t2
            WHERE t1.c1 = '2008-05-31' AND t1.d1 = t2.d2)
WHERE     t1.c1 = '2008-05-31'
       AND EXISTS
              (SELECT d2
                 FROM t2
                WHERE t1.d1 = t2.d2);
索引加好,这样效率是不是更高一些。可以考虑用游标循环update,比较一下效率。收起
互联网服务 · 2013-07-22
浏览899
jgq840930jgq840930数据库管理员XXXX
错,很常用的 回复 5# cooker01 显示全部
错,很常用的 回复 5# cooker01 收起
互联网服务 · 2013-06-26
浏览887
mdkiimdkii软件开发工程师bocn
merge应该多用,有时候优化器对merge的优化比这种关联update好一些。显示全部
merge应该多用,有时候优化器对merge的优化比这种关联update好一些。收起
银行 · 2013-06-21
浏览848
cooker01cooker01系统工程师baosight
在日常开发中MERGE还是用的比较少的。显示全部
在日常开发中MERGE还是用的比较少的。收起
互联网服务 · 2013-06-21
浏览912
zhugfangzhugfang软件开发工程师杭州信雅达
支持使用merge显示全部
支持使用merge收起
互联网服务 · 2013-06-18
浏览937
leo_wynleo_wyn商业智能工程师Security
我认为更好的方法:merge into t1 tusing (select a2, b2 from t2) son ( t.c1 = '2008-05-31' and t.d1 = s.d2 )when matched  then update set t.a1 = s.a2, t.b1 = s.b2显示全部
我认为更好的方法:

merge into t1 t
using (select a2, b2 from t2) s
on ( t.c1 = '2008-05-31' and t.d1 = s.d2 )
when matched  then update set t.a1 = s.a2, t.b1 = s.b2收起
系统集成 · 2013-06-18
浏览884
leo_wynleo_wyn商业智能工程师Security
我觉得这2种写法差异不大(数据量不大的情况下), where 的谓词过滤的结果是一样的,都是对 根据 “t1.c1 = '2008-05-31' and t1.d1 in (select d2 from t2) ” 进行过滤可以实际分析下查询计划显示全部
我觉得这2种写法差异不大(数据量不大的情况下), where 的谓词过滤的结果是一样的,都是对 根据 “t1.c1 = '2008-05-31' and t1.d1 in (select d2 from t2) ” 进行过滤

可以实际分析下查询计划收起
系统集成 · 2013-06-18
浏览852

提问者

chenmi1889
软件开发工程师北京

问题状态

  • 发布时间:2013-06-18
  • 关注会员:1 人
  • 问题浏览:3592
  • 最近回答:2013-07-22
  • X社区推广