最近从 MSSQL 转移到 oracle,自己草草学习了下,还真不简单。感觉还挺喜欢 oracle 的,不过这个大小写区分查询,也着实坑了爹。查阅了一下,方法有:1、
CREATE INDEX I_emp_ENAME ON emp(UPPER(EName));坑爹的是查询一定要使用SELECT * FROM emp WHERE UPPER(ENAME) = 'ALLEN'如果不使用“UPPER(ENAME)”,就不让使用索引查询了……2、还有一种是每次连接都在会话中更改。这点也坑爹。请问有其他办法吗?可以使用索引:CREATE INDEX I_emp_ENAME ON emp(EName);也不用处处加 UPPER 或 LOWER 函数。
CREATE INDEX I_emp_ENAME ON emp(UPPER(EName));坑爹的是查询一定要使用SELECT * FROM emp WHERE UPPER(ENAME) = 'ALLEN'如果不使用“UPPER(ENAME)”,就不让使用索引查询了……2、还有一种是每次连接都在会话中更改。这点也坑爹。请问有其他办法吗?可以使用索引:CREATE INDEX I_emp_ENAME ON emp(EName);也不用处处加 UPPER 或 LOWER 函数。
同从mssql刚转oracle,一起学习吧。
这个函数索引就是为了mssql那种只要一用函数在左边就杯具的辅助功能而已吧,一般还是不会用的
我知道有一个方法。但据说会引起全表扫描。但我的测试却没有。奇怪。alter session set NLS_SORT=BINARY_CI;
alter session set NLS_COMP=LINGUISTIC;小心NLS_SORT和NLS_COMP的设置成为性能杀手
还有此篇文章也表示性能问题:http://huajiang.iteye.com/blog/510507
AS select * from NLS_SESSION_PARAMETERS;无法插入临时表数据?只有复制了表结构?
如果建立的是普通索引,就不需要每次转换了啊。2.删除原来的函数索引,建立新的普通索引。