0
我有一个针对6个Oracle表的查询,所有内部连接。
当我运行条件
WHERE tablex.MsgId > 13298690
,答案是立竿见影。
当我运行条件
WHERE tablex.MsgId > Dlookup("ParamLong","tblParamSave","ParamName='SomeName'")
,它需要1分钟。
当然,Dlookup返回13298690,所以两个查询在功能上都是相同的。在查询条件中查找Dlookup:slow
我的猜测是,它正在评估第二种情况下每一行的函数,而在第一种情况下,它只是进行索引查找。 – user2989408
可能的解决方案,评估函数并将结果保存到变量中,然后使用该变量进行比较。 – user2989408
我不建议在查询中使用VBA函数。如果使用ADO或SQL Pass Through Queries,会出现像这样的性能问题。 – HK1