我正在将数据有问题地插入表中。当我从另一个表执行此操作时,它很快,但如果有很多记录,则只会非常缓慢地放慢速度。即使那样,也只需要几秒钟。
当我从查询插入到表时,它需要花费几分钟的时间-大约每插入1000条记录需要一分钟。
源查询本身仅作为选择查询运行时,可能需要1-2秒。查询是否针对插入的每个记录运行?我希望它会在整个数据集中运行一次。还是有其他原因导致该函数与从另一个表插入“平面”数据相比运行得如此缓慢。
我正在使用的VBA相当无害:
CurrentDb.Execute "SELECT [Extra Value Concatenation].* _ INTO [" & strTableName & "] FROM [Extra Value Concatenation];"
源查询在下面-它使用Allen Browne的Concatenate函数。
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
因此,将数据连接到临时表中似乎是一个好主意,但是却减慢了一切。我还有另一种查看查询的方式吗?
您正在使用ConcatRelated用户定义函数(UDF),因此UDF为每个记录运行,否则,通常Access SQL以正常方式工作。