重新设计我的雇主数据库的一部分我遇到的子程序是由最初创建它的人编写的,如下所示:
DoCmd.OpenQuery "qry1"
DoCmd.OpenQuery "qry2"
DoCmd.OpenQuery "qry3"
DoCmd.OpenQuery "qry4"
DoCmd.OpenQuery "qry5"
DoCmd.OpenQuery "qry6"
DoCmd.OpenQuery "qry7"
etc...
etc.....
etc.......
我一直使用DoCmd.RunSQL在事件后面运行查询等,主要是因为SQL在VBA编辑器中的一个地方就在我面前。
目前,一些程序最多有50个OpenQuery处理具有250000+记录的表。简单地查看一下这些查询似乎可以将它们中的许多组合在一起,因为它们使用相同的数据集进行类似的操作,在我看来,编写它们的人并没有很好地理解SQL。
我的问题是哪种方法在性能等方面更好.DoCmd.OpenQuery或DoCmd.RunSQL
答案 0 :(得分:3)
如果这些是行动查询(UPDATE
或DELETE
或INSERT
,而不仅仅是SELECT
),那么这无关紧要。 (可能有一些微不足道的开销,Access正在尝试收集输出记录以在网格中显示。)
如果它们不是动作查询,那么DoCmd.RunSQL
无论如何都不会做任何事情。
另外,请考虑使用DoCmd.Execute
而不是DoCmd.RunSQL
,因为Execute可以采用保存的查询名称而不仅仅是原始SQL。