1

我在 MS Access 2010 中运行以下插入查询,我需要一种方法让查询运行得更快。我确实需要将 Source_1_table 中的所有列都放入 temp_Table。

  • 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 分钟。有什么方法可以加快这个查询?

4

1 回答 1

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
于 2013-08-23T19:09:22.103 回答