2013-08-23 115 views
1

我在MS Access 2010中运行以下插入查询,并且我需要一种查询运行速度更快的方法。我确实需要将Source_1_table中的所有列都存入temp_Table。MS Access 2010:查询时间和速度

  • Source_1_table具有505K记录
  • Source_2_table具有3959个记录

    INSERT INTO [temp_Table] SELECT * FROM Source_1_table WHERE ((dbo_Source_1_table.Field_1))NOT IN(SELECT [Source_2_table] 。[ID_Field] FROM [Source_2_table]));

问题1.如何查看查询运行多长时间(类似于SSMS)? 问题2.查询似乎需要超过10分钟才能运行。有没有办法加快这个查询?

+0

这是链接到SQL Server中的表,它是本地的,还是它在不同的数据库?您可能需要查看传递查询。另外,我怀疑这会有所作为,但考虑切换桌子的位置来检查小>大而不是大>小。 – Elias

+1

您是否为WHERE子句中引用的两列定义了索引? –

回答

1

我从来没有在Access数据库中使用过很多记录,所以我并不感到惊讶,它很慢。

我最近在一些遗留代码中解决了类似的问题。我认为一个大问题是,你在主查询中为每个记录运行一次子查询(有人请纠正我,如果这是不正确的)。试试这个:

INSERT INTO [temp_Table] 
SELECT s1.* 
    FROM Source_1_table s1 
    Left Join Source_1_table s2 on s1.Field_1=s2.ID_Field 
    where s2.ID_Field is null