Ao inserir dados de uma consulta em uma tabela, a consulta é executada para cada registro inserido?

Estou inserindo dados de forma problemática nas tabelas. Quando faço isso de outra tabela, é rápido, só diminui muito lentamente se houver muitos registros. Mesmo assim, é uma questão de segundos.

Quando insiro uma consulta para uma tabela, ela leva alguns minutos - aproximadamente um minuto para cada 1.000 registros inseridos.

A consulta de origem propriamente dita, quando executada como uma consulta de seleção, pode levar de 1 a 2 segundos. A consulta está sendo executada para todos os registros inseridos? Eu esperava que fosse executado uma vez para todo o conjunto de dados. Ou há outra coisa que está causando a execução da função tão lentamente quando comparada à inserção de dados "simples" de outra tabela.

O VBA que estou usando é bastante inócuo:

CurrentDb.Execute "SELECT [Extra Value Concatenation].* _
INTO [" & strTableName & "] FROM [Extra Value Concatenation];" 

e a consulta de origem está abaixo - ela usaFunção Concatenate de Allen Browne.

SELECT [Extra Fields - Fee Protection Insurance Concatenate].ContactID,
ConcatRelated('[Fee Protection Insurance]',
'[Extra Fields - Fee Protection Insurance Concatenate]',
'ContactID = ' & [ContactID]) 
AS [Fee Protection Insurance]
FROM [Extra Fields - Fee Protection Insurance Concatenate];

EDIT: Em resposta ao comentário de Fionnuala, mas não consegui formatá-lo adequadamente nos comentários.

Usando dados fictícios, aqui está mais ou menos o que eu quero.

T1 contém registros do cliente.

ContactID    Name
1            Example Limited
2            Another Company Limited

T2 contém campos extras. O ContactID existe como uma chave estrangeira e pode ser duplicado se vários registros forem mantidos.

ContactID    FieldValue
1            Value 1
1            Value 2
2            Value 3
2            Value 4
2            Value 5

Quando saí da junção das tabelas, as duplicatas do T2 aparecem, então recebo

ContactID    Name                       FieldValue
1            Example Limited            Value 1
1            Example Limited            Value 2
2            Another Company Limited    Value 3
2            Another Company Limited    Value 4
2            Another Company Limited    Value 5

quando o que eu quero é

ContactID    Name                       FieldValue
1            Example Limited            Value 1; Value 2
2            Another Company Limited    Value 3; Value 4; Value 5

Portanto, concatenar os dados em uma tabela temporária parecia uma boa idéia, mas está diminuindo a velocidade de tudo. Existe outra maneira de analisar minha consulta?

questionAnswers(3)

yourAnswerToTheQuestion