在Sybase上不区分大小写的搜索
时间:2020-03-05 18:58:19 来源:igfitidea点击:
我已经厌倦了,在Google Sybase ASE上执行不区分大小写的搜索的解决方案(Sybase数据/列名称区分大小写)。 Sybase文档引以为豪的是,只有一种方法可以使用上限和下限功能进行搜索,但是谚语说,它存在性能问题。并相信我,他们是对的,如果表中有大量数据,那么性能是如此尴尬,我们永远不会再使用Upper和Lower。我对其他开发人员的问题是:你们如何解决这个问题?
P.S.不要建议更改排序顺序或者转移到任何其他数据库,因为在现实世界中,开发人员无法控制数据库。
解决方案
回答
如果无法更改数据库的排序顺序(最佳选项),则未知案例字段上的索引将无济于事。如果字段的数量是可管理的,则有一种方法可以做到这一点并保持性能。我们添加一个额外的列MyFieldLower。我们使用触发器来使字段填充为MyField的小写字母。
然后查询是:
在哪里MyFieldLower = LOWER(@MySearch)
这将使用索引。
回答
尝试创建一个"功能索引",例如
Create Index INDX_MY_SEARCH on TABLE_NAME(LOWER(@MySearch)