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?