Sql 交换机与IIF的性能比较?

Sql 交换机与IIF的性能比较?,sql,ms-access-2003,Sql,Ms Access 2003,背景:为了满足数据库结构的需要,将著名的Excel报表项目迁移到MS Access中 限制:开发环境在Excel和Access中。由于大量的数据处理和n个月移动数据的保存,它无法通过记录集进行循环 问题:在当前的Excel报告平台中,有多个子工具分别用于处理数据。因此,它有权通过遍历每一行来处理小块数据。使用IF-ELSE执行条件检查 在建议的MS访问结构中,这些IF-ELSE被转换为IIF。鉴于这种情况,我想知道对IIF和交换机性能比较的看法。我们欢迎任何更好的解决方案 PS:导入源代码后,数

背景:为了满足数据库结构的需要,将著名的Excel报表项目迁移到MS Access中

限制:开发环境在Excel和Access中。由于大量的数据处理和n个月移动数据的保存,它无法通过记录集进行循环

问题:在当前的Excel报告平台中,有多个子工具分别用于处理数据。因此,它有权通过遍历每一行来处理小块数据。使用IF-ELSE执行条件检查

在建议的MS访问结构中,这些IF-ELSE被转换为IIF。鉴于这种情况,我想知道对IIF和交换机性能比较的看法。我们欢迎任何更好的解决方案


PS:导入源代码后,数据库自动关闭,以便在“膨胀”时进行压缩和修复。最终db应该兼容ms 2003和2010软件包

我想这可能就是您想要的:

Iif函数根据表达式是否为真返回两个值之一。下面的表达式使用Iif 函数,如果LineTotal的值为 超过100。否则返回False

当您有三种或三种以上情况时,开关功能非常有用 测试。Switch函数返回与 计算结果为true的序列中的第一个表达式


我认为
Switch
是一个VBA函数(比如
Nz
),而
Iif
是一个SQL函数。这有很多含义,您可以探索。

在客户机-服务器体系结构(SQL server/Oracle或类似后端)中工作时,应特别避免在查询中使用这些VBA函数。

谢谢GianlucaBobbie!在手机上写作时,我没有添加参考资料。您的回答适合于问题标题,但我也渴望听到其他可以改进当前设计的解决方案+1是否有足够的理由对否决票发表评论?非常有趣的补充,在一些问题中,我可能会为此感到内疚。但你确定这会有所不同吗?如果链接ODBC表上的查询使用了
IIf()
,Access或ODBC驱动程序是否将其转换为可在服务器端进行评估的内容?@Andre我非常确定ODBC正确地转换了
IIf
,而Nz则没有。如果您有一个SQL Server,其中至少有一个大表+1个可以链接到它的其他表,那么测试就非常容易。使用