SQL查询的工作速度比Access查询向导慢

时间:2017-03-13 17:43:06

标签: sql ms-access access-vba

我正在努力自动消除MS Access中两个表中不匹配的行。众所周知,Access有一个名为Find unmatched records的查询向导。即使对于500k数据行,此方法也能快速工作。

但是当我在MS Access VBA中执行查询时,它的工作速度很慢。是否有更快的SQL实现来消除数据,或者MS Access是否使用不同的方法?我怎样才能快速完成?

以下是我在VBA中的查询。表1和表2各有超过100k行。

strQuery = SELECT gsmno INTO newtablename FROM table1 WHERE gsmno NOT IN (SELECT gsmno FROM table2)
CurrentDb.Execute strQuery

1 个答案:

答案 0 :(得分:1)

使用LEFT OUTER JOIN并在Table2 gsmno上检查NULL。那些是你的不匹配。

strQuery = & _
"SELECT " & _
"   t1.gsmno " & _
"INTO " & _ 
"   newtablename " & _ 
"FROM " & _ 
"   table1 as t1 " & _
"LEFT OUTER JOIN " & _ 
"   table2 as t2 on " & _
"      t1.gsmno = t2.gsmno " & _ 
"WHERE " & _ 
"   isnull(t2.gsmno) = true;"

CurrentDb.Execute strQuery