Ms access 如何提高临时表计数的效率
我试图向access表中添加一个count字段,该字段按时间顺序为另一个字段中的每个重复记录递增 因此,每当uniquecase重复时,计数器将增加1。这也是按时间顺序排列的,因此副本编号为1向上,从最早的副本开始,例如Ms access 如何提高临时表计数的效率,ms-access,Ms Access,我试图向access表中添加一个count字段,该字段按时间顺序为另一个字段中的每个重复记录递增 因此,每当uniquecase重复时,计数器将增加1。这也是按时间顺序排列的,因此副本编号为1向上,从最早的副本开始,例如 Counter | UniqueCase | ResolvedDate 1 3312 01/01/2018 1 6374 01/01/2018 2 6374 02/01/2018 1
Counter | UniqueCase | ResolvedDate
1 3312 01/01/2018
1 6374 01/01/2018
2 6374 02/01/2018
1 8546 15/03/2019
2 8546 18/03/2019
3 8546 12/05/2019
以下查询适用于这种情况:
SELECT
(SELECT COUNT(*)
FROM [COMEBACKTEST2]
AS TMP
WHERE [UNIQUECASE]=[COMEBACKTEST2].[UNIQUECASE]
AND [KEY]<=[COMEBACKTEST2].[KEY]
) AS [COUNTER],
*
INTO [Comeback 3]
FROM COMEBACKTEST2
ORDER BY COMEBACKTEST2.UniqueCase, COMEBACKTEST2.ResolvedDate;
当我查看这个时,需要几秒钟的时间,我可以看到结果是正确的,我扫描了几千行。但是,在尝试运行时,即使离开它几个小时,它也不会完成
这个查询是否有更有效的版本,因为在它的当前状态下,它似乎过于密集而无法实际工作
[COMEBACKTEST2]中大约有130k行
我试过索引
我试着只是查询,而不是添加
我猜它需要一个完全不同的方法?
任何帮助都将不胜感激,谢谢
上面的示例丢失了格式对不起:
Access SQL优化器并不复杂,因此它很可能会为外部查询的每一行重新运行嵌套查询,因此运行整个SELECT INTO需要很长的时间。通常,最好避免在SELECT子句中使用嵌套查询,而是在聚合查询中使用join。困难在于基于不等式计算记录。为此,我们利用交叉连接,即笛卡尔积,然后仅在产品的一侧对关键值进行分组
SELECT COUNTER.Sequence, t3.*
INTO [Comeback 3]
FROM COMEBACKTEST2 AS t3 JOIN
(SELECT Count(t1.KEY) AS Sequence, t1.UNIQUECASE, t1.KEY
FROM COMEBACKTEST2 AS t1, COMEBACKTEST2 AS t2
WHERE ((t2.UNIQUECASE = t1.[UNIQUECASE]) AND (t2.KEY <= t1.[KEY]))
GROUP BY t1.UNIQUECASE, t1.KEY
) AS [COUNTER]
ON (t3.UNIQUECASE= COUNTER.UNIQUECASE) AND (t3.KEY = COUNTER.KEY)
ORDER BY t3.UNIQUECASE, COUNTER.Sequence;
最好还是有适当的索引。在这种情况下,请确保[UniqueCase]和[Key]上有单独的索引
如果您希望随示例列返回其他列,则需要使用上述表单。但是,只要[ResolvedDate]按时间顺序与所述的[Key]值对应,则可以在单个查询中获得所有过账的列:
SELECT Count(t1.KEY) AS Sequence, t1.UNIQUECASE,
t1.KEY, Max(t2.ResolvedDate) AS ResolvedDate
FROM COMEBACKTEST2 AS t1, COMEBACKTEST2 AS t2
WHERE ((t2.UNIQUECASE = t1.[UNIQUECASE]) AND (t2.KEY <= t1.[KEY]))
GROUP BY t1.UNIQUECASE, t1.KEY
ORDER BY t1.UNIQUECASE, t1.KEY;
请提供准确的细节,而不是关键细节的摘要。描述您尝试的精确索引与显示SQL代码一样重要,特别是当问题是关于查询效率的时候。仅供参考。使用适当的标记可以保留格式。“问题”编辑框有一个带有各种格式按钮的工具栏。您也可以单击?工具栏上的按钮/图标,获取有关格式化文档的更多帮助。