我有一个很大的旧MS Access表,有~84列和~280k行。其中三列是LabNumber
(已编入索引),HospitalNumber
(非索引)和NHSNumber
(非索引)。我想搜索HospitalNumber
和 NHSNumber
一个字词来检索LabNumber
的值。它是一个经常使用的生产数据库,因此表必须保持 。哦,数据库正在通过网络访问。查询痛苦地慢。
利用正则表达式的强大功能,我可以找出我需要查看的NHSNumber
和HospitalNumber
中的哪一个。将其缩减为仅查看一个或另一个让它变得更快,但它在美好的一天仍然需要30秒,有时甚至更长。
我的问题是这个。是否有任何其他提示或技巧可以用来尝试将执行时间降低到更易于管理的水平?欢迎务实的解决方案,但请记住,表不得更改,现有数据库将相对定期更新(让我们说数据是一天出去并不是什么大不了的事,但绝对是一周了)
请求了查询,所以在这里。不幸的是,这并不令人兴奋:
SELECT [ConsID], [LabNumber], [HospitalNumber], [NHSNumber]
FROM Samples
WHERE [NHSNumber]="1234567890";
答案 0 :(得分:2)
如果无法修改现有表,请将其复制到本地表并对搜索的列应用索引。
这一切都可以通过您需要更新时可以运行的代码来完成。
答案 1 :(得分:1)
如果您使用VBA在启动时打开表并在数据库关闭之前保持打开状态,则应显着提高性能。