我在Access中有这个查询:
SELECT TOP 10 title,
ConcatRelated("DOCTEXT","DocumFrag", "title='" & title & "'" ) AS result
FROM DocumFrag
GROUP BY title;
DocumFrag包含大约9000条记录,ConcatRelated是在此处找到的VBA代码:http://allenbrowne.com/func-concat.html
当我仅针对TOP 10运行此查询并且它完成时,它会持续滞后到20秒的响应时间(点击,键入等)。
有没有办法可以提高它的稳定性?我以TOP 10为例来测试它是否滞后;最后我需要选择所有。
此查询的目标与Concatenating record values in database (MS Access) or in server side code (ASP.NET)相同(除了在Access中,而不是ASP.NET)
或者有没有办法可以使用查询而不是VBA来完成此任务?
答案 0 :(得分:2)
我最好的猜测是ConcatRelated评估'DocumFrag'中的每个'标题'。在应用函数之前,在内部查询中选择前10个:
SELECT q.title, ConcatRelated("DOCTEXT","DocumFrag", "title='" & q.title & "'" ) AS result
FROM
(SELECT TOP 10 title FROM DocumFrag) AS q
GROUP BY q.title;
答案 1 :(得分:0)
是的,首先要确保你的数据表有一个聚簇索引(这决定了数据存储在磁盘上的顺序),否则你有一个堆,而sql引擎需要查询整个表,因为数据可以在任何地方桌子。第二个为查询参数和要返回的数据设置了覆盖索引。 3你想尝试分组文字?最好找到前10个项目,然后将文本与其关联,而不是像你的代码那样对每个组项目进行调整,然后选择前10个。