求教:查询时间慢的问题!
需求:把B表的数据插入A中,AB表结构一样。
为防止B重复插入A,我以下面的SQL作判断条件:
select * from B where id in
(
select a1.id from A a1,B b1
where a1.name+ a1.time= b1.name+ b1.time //注:以名字和时间来确定唯一
)
问题是当然表中有30000行数据时,执行很慢,加了索引也20分钟。
本人接触数据,请指点,是不是我的思路有问题?
------解决方案--------------------if exists(SELECT b.* FROM B as b1
LEFT JOIN A AS a1 on a1.name+ a1.time= b1.name+ b1.time
WHERE a1.id IS NULL)
------解决方案--------------------If Exists(Select B.id From B Left Join A On A.name = B.name And A.[time] = B.[time] Where A.id Is Null)
------解决方案--------------------if exists
(
select 1 from A a1
inner join B b1
on a1.[name]=b1.[name] and a1.[time]=b1.[time]
)
------解决方案--------------------楼主你Left join A as a1 ...加上一个and where b1.name is null ---结果肯定一行数据都没有,因为这样只存在a1.name is null的值
除非你是Right join A a1...加上一个and where b1.name is null 如果存在数据那么象
TO:hellowork(一两清风) 老大所说的 A表中存在B表中没有的数据