Oracle数据库中不区分巨细写搜刮的机能
我的数据库配景位于MS SQL Server端,个中索引和束缚中的文本较量不区分巨细写(至少在默认环境下).因此,一旦将值“abc”分派给独一列,就不能存储第二个值“ABC”,假如搜刮“ABC”,SQL Server将找到“abc”. 对付Oracle,环境有所差异,以是纵然文本列上有独一索引,也可以存储“abc”和“ABC”,假如搜刮“AbC”,则不会获得任何功效. 在Oracle 10gR2之前的AFAIK没有步伐绕过它,此刻可以配置不敏感的较量,由于恕我直言,由于统统都取决于措施员的规律. 可是对付区分巨细写的查找最糟糕的是,那些将全部搜刮重写为UPPER(some_column)= UPPER(some_text)(这是很多接头主题保举的)的人纵然在some_column上有索引时也会以表扫描竣事.机能寄义是不不变的:我方才在一个有50万行的表上测试了一个简朴的搜刮,而且行使UPPER函数挪用的搜刮比仅行使列标识符的搜刮耗费了20倍,从而确认在执行函数时不行使索引基于搜刮. 在Oracle数据库中举办不区分巨细写搜刮的最尺度技能是否真的云云,纵然机能不佳,照旧应用UPPER / LOWER函数来搜刮元素?可能有更优雅的要领来办理这个题目? 办理要领是的,行使UPPER(some_column)= UPPER(some_text)确实是最好的要领,但你可以在UPPER(some_column) 上建设索引.这应该可以缓解这个题目.
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |