小编典典

将数据从查询插入表时,查询是否针对插入的每个记录运行?

sql

我正在将数据有问题地插入表中。当我从另一个表执行此操作时,它很快,但如果有很多记录,则只会非常缓慢地放慢速度。即使那样,也只需要几秒钟。

当我从查询插入到表时,它需要花费几分钟的时间-大约每插入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

因此,将数据连接到临时表中似乎是一个好主意,但是却减慢了一切。我还有另一种查看查询的方式吗?


阅读 223

收藏
2021-04-07

共1个答案

小编典典

您正在使用ConcatRelated用户定义函数(UDF),因此UDF为每个记录运行,否则,通常Access SQL以正常方式工作。

2021-04-07