2013-08-23 187 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