两个表之间的数据比较,求算法?(200分)

  • 主题发起人 主题发起人 dadada
  • 开始时间 开始时间
D

dadada

Unregistered / Unconfirmed
GUEST, unregistred user!
有两个字段结构一模一样的表,只是表名不同.<br>假设有4个字段,两个表分别有10条数据,初始的时候两个表的数据是一样的,<br>就是从A表直接复制数据到B表,所以完全一样的.<br><br>需求:<br><br>当修改了A表的某个字段的值,要求用一条SQL语句与B表进行比较,把它显示成视图.<br>我现在用在视图中的语句如下:<br>select a.* from A表 where a.字段1+a.字段2+a.字段3+a.字段4 not in (<br>select b.字段1+b.字段2+b.字段3+b.字段4 from B表 )<br><br>执行现象:<br><br>1.如果A表中某条记录的某个字段值为null,则整条记录的比较失效,显示不出来<br>2.速度超慢,实际中两个表的记录量超过一千条以上,执行这个视图需要痛苦等待!<br>当然最后能够出来我需要的数据(如果表中无NULL值的话),只是太慢了<br><br>问题:<br>我现在用的多字段相加再not in 的算法超慢,不能实用.请高手提供效率更高的算法?<br>在线等待您的指点~
 
大家只看不答,难道没有另外的算法了?
 
全表扫描肯定慢,你可以建立需要扫描字段的索引;再就是把脚本修改下,这是效率最低的脚本;<br><br>参考:<br>select a.* from a,b where a.key=b.key and a.field1&lt;&gt;b.field1 and ...;
 
谢谢楼上的指点,我就是需要脚本算法的改良,先按你的方法修改测试!
 
select a.* from A表 a,B表 b where a.字段1+a.字段2+a.字段3+a.字段4 <br>&lt;&gt; b.字段1+b.字段2+b.字段3+b.字段4
 
谢谢楼上两位,问题基本解决了!
 
我没看明白你的意思,不过说的Not in 你用Exists 代替
 
后退
顶部