Pet*_*ger 2 sql-server oracle linked-server case-insensitive openquery
我们有一个MS SQL Server 2005安装,它通过链接服务器连接连接到Oracle数据库。
许多 SELECT 语句是通过一系列OPENQUERY()命令执行的。大多数这些语句中的 WHERE 子句都是针对VARCHAR列的。
我听说如果 WHERE 子句区分大小写,它会对性能产生很大影响。
所以我的问题是,如何确保以不区分大小写的方式执行非二进制字符串 WHERE 子句以获得最大性能?
其实是反过来的:
区分大小写...
WHERE column = :criteria
Run Code Online (Sandbox Code Playgroud)
...将column直接使用索引并表现良好。
不区分大小写通常需要这样的东西......
WHERE UPPER(column) = UPPER(:criteria)
Run Code Online (Sandbox Code Playgroud)
......这也不能使用的指标column和表现不佳(除非你很小心,并创建一个功能上的指标UPPER(column))。
我不确定是否有OPENQUERY()任何改变,但从纯粹的 Oracle 角度来看,区分大小写和不敏感的查询都可以提高性能,不敏感的查询需要特别注意(功能索引)。
| 归档时间: |
|
| 查看次数: |
34010 次 |
| 最近记录: |