sql-server - 停止 SQL Server 在 WHERE 子句中评估无用的 UPPER/LOWER?

标签 sql-server

似乎尽管 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/

相关文章:

sql-server - 如何使用 SQL Server 2008 HierarchyID 获取节点的所有祖先?

c# - 在 Windows 窗体应用程序中将数据从一个 OleDb 数据库复制到另一个

php - SQL - 添加列值单表

sql-server - 是否有 Transact-SQL 的替代品

sql - sql中的模糊匹配

SQL Server 按 X 小时/天/周分组

SQL:将 varchar 转换/解析为 int 或零(非 NULL)的简单方法

c# - 在 LINQ to SQL 中禁用触发器

sql-server - 强制参数化

sql - 在sql server中执行一个sql字符串