mysql如何优化这条更新语句?

    UPDATE yw_tmp_usr a SET a.hth=(SELECT b.hth FROM yhdang b WHERE a.business_key=b.dh )
    WHERE EXISTS (SELECT b.hth FROM yhdang b WHERE a.business_key=b.dh );

上面这条语句在Oracle中执行效率比mysql中高得多,在mysql中却总是没反应,甚至报错:1205。我修改了linux上的my.cnf文件,让innodb_lock_wait_timeout = 1200,但仍无结果,请问各位大神,8.5万的数据,这样更新大概需要多长时间,如何优化呢??

阅读 3.3k
2 个回答

UPDATE yw_tmp_usr a, yhdang b SET a.hth = b.hth WHERE a.business_key=b.dh

UPDATE yw_tmp_usr SET hth = T.hth

FROM (

SELECT hth, dh FROM yhdang  

) T

WHERE yw_tmp_usr.business_key = T.dh

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题