Oracle数据库中不区分大小写搜索的性能

Oracle数据库中不区分大小写搜索的性能,第1张

概述我的数据库背景位于MS SQL Server端,其中索引和约束中的文本比较不区分大小写(至少在默认情况下).因此,一旦将值“abc”分配给唯一列,就不能存储第二个值“ABC”,如果搜索“ABC”,SQL Server将找到“abc”. 对于Oracle,情况有所不同,所以即使文本列上有唯一索引,也可以存储“abc”和“ABC”,如果搜索“AbC”,则不会得到任何结果. 在Oracle 10gR2之 我的数据库背景位于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)上创建索引.这应该可以缓解这个问题. 总结

以上是内存溢出为你收集整理的Oracle数据库中不区分大小写搜索的性能全部内容,希望文章能够帮你解决Oracle数据库中不区分大小写搜索的性能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1166046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存