似乎尽管 SQL Server 在 WHERE 子句中不匹配大小写,但它仍然支持 WHERE 子句中的 UPPER/LOWER,这似乎非常昂贵。是否可以指示 SQL Server 忽略 WHERE 子句中的 UPPER/LOWER?
这似乎是一个毫无意义的问题,但能够为 Oracle 和 SQL Server 编写一个查询是非常好的。
谢谢,杰米
最佳答案
对您的问题的简短回答是否定的 - 您不能让 SQL 服务器神奇地忽略 WHERE
子句中的函数调用。
正如其他人所说,造成性能问题的原因是,在 SQL Server 上,在 WHERE
子句中使用函数会阻止使用索引并强制执行表扫描。
为了获得最佳性能,您需要维护两个查询,每个 RDBMS 平台一个(在您的应用程序中或在存储过程或 View 等数据库对象中)。鉴于 Oracle 和 SQL Server 在许多其他功能方面存在差异,您很可能最终还是要这样做,如果不是为了这个,也是为了别的。
关于sql-server - 停止 SQL Server 在 WHERE 子句中评估无用的 UPPER/LOWER?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3188067/