我将数据有问题地插入表中。当我从另一张桌子上做到这一点时,它很快捷,如果有很多记录,只会略微减慢。即便如此,这只是几秒钟的事情。将查询中的数据插入到表中时,插入的每个记录是否都运行查询?
当我从查询插入表时,它进入分钟 - 每插入一千条记录大约一分钟。
源查询本身在作为select查询运行时,可能需要1-2秒。查询是否为每个插入的记录运行?我希望它能为整个数据集运行一次。或者,与插入另一个表中的“平坦”数据相比,导致该功能运行速度非常慢的其他因素。
我使用的VBA是相当无害:
CurrentDb.Execute "SELECT [Extra Value Concatenation].* _
INTO [" & strTableName & "] FROM [Extra Value Concatenation];"
和源查询低于 - 它使用Allen Browne's Concatenate function。
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];
编辑:在回答Fionnuala的评论,但我无法正确地在评论中格式化。
使用虚构数据,这里大概是我想要的。
T1包含客户记录。
ContactID Name
1 Example Limited
2 Another Company Limited
T2包含额外的字段。 ContactID作为外键存在,并且如果存在多个记录,则可以重复。
ContactID FieldValue
1 Value 1
1 Value 2
2 Value 3
2 Value 4
2 Value 5
当我离开联接表,从T2的重复出现,所以我得到
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
当我要的是
ContactID Name FieldValue
1 Example Limited Value 1; Value 2
2 Another Company Limited Value 3; Value 4; Value 5
因此串联在一个临时的数据表似乎是一个好主意,但是会放慢一切。有另外一种方法我应该查看我的查询吗?
您使用用户定义函数(UDF)ConcatRelated,所以UDF运行的每个记录,否则,通常不会。 – Fionnuala
谢谢@Remou - 是的,我是,这是Concatenate位。有没有办法解决? – BFWebAdmin
除了避免UDFs,如果你需要速度,不,没有办法解决。为什么你想连接?这几乎总是一个坏主意。 – Fionnuala