update和子查询的问题 update A set fFlag = 1 where ID in (select ID from B)A表有百万数据,B表有几万数据,这样的执行效率非常非常低。后来我在A表的ID字段上也加了索引,但是效率还是很低,有何办法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 update A inner join B on a.id=b.id set fFlag = 1 update A,B set fFlag = 1 where a.id=b.id 不是,从理论上讲,速度应该是一样的第二种是笛卡尔集合:不是哦,有条件WHERE a.id=b.id explain update A set fFlag = 1 where ID in (select ID from B) ;分析一下,看看那里瓶颈. 第一种是匹配记录才进行连接第二种是连接后才匹配当然在不同的数据库系统种,具体实现方式是不同。若是在MySQL ,我会使用第一种方法进行记录更新。若是在Oracle,我会使用其他方式去更新记录(exits 函数)。所以,要看楼主是使用什么数据库系统。 这两条SQL语句都内连接,只不过第一条是显性内连接,后者是隐性内连接 大型数据库在很多细节上与mysql概念上不同。. [align=center]==== 思想重于技巧 ====[/align].贴子分数<20:对自已的问题不予重视。贴子大量未结:对别人的回答不予尊重。. reply via CSDN viewer update A,B set A.fFlag = 1 where A.ID = B.ID;See the multiple update syntax on the document.http://dev.mysql.com/doc/refman/5.1-maria/en/update.html mysql 是不是mysql表的数据内容太多了导致syslog页面打开很慢? SQLyog Enterprise 连接不上 如何实现这个效果 mysql统计问题 高手留步:MySQL和 MaxDB by mysql 为什么我的控制中心不能连接上 MySQL 呀? 求救,关于vc调用mysql的c API如何取得数值型字段的值 请教:mysql中怎么用*.sql文件创建数库呢? Mysql中文乱码,如何解决? mysql 的奇怪问题 mysql复制问题,急!
第二种是笛卡尔集合:不是哦,有条件WHERE a.id=b.id
第一种是匹配记录才进行连接第二种是连接后才匹配当然在不同的数据库系统种,具体实现方式是不同。
若是在MySQL ,我会使用第一种方法进行记录更新。
若是在Oracle,我会使用其他方式去更新记录(exits 函数)。所以,要看楼主是使用什么数据库系统。
[align=center]==== 思想重于技巧 ====
[/align]
.
贴子分数<20:对自已的问题不予重视。
贴子大量未结:对别人的回答不予尊重。
.
update A,B set A.fFlag = 1 where A.ID = B.ID;See the multiple update syntax on the document.
http://dev.mysql.com/doc/refman/5.1-maria/en/update.html