我厌倦了Google搜索在Sybase ASE上进行不区分大小写搜索的解决方案(Sybase数据/列名称区分大小写)。 Sybase文档自豪地说只有一种方法可以使用Upper和Lower函数进行搜索,但是谚语说,它存在性能问题。并且相信我他们是对的,如果你的桌子有巨大的数据表现如此尴尬,你永远不会再使用上下。我向其他开发者提出的问题是:你们怎么解决这个问题?
P.S。请不要建议更改排序顺序或移动到任何其他数据库,在现实世界中,开发人员不控制数据库。
答案 0 :(得分:3)
尝试创建functional index
,例如
Create Index INDX_MY_SEARCH on TABLE_NAME(LOWER(@MySearch)
答案 1 :(得分:2)
在select语句中添加其他大写或小写列。例如:
select col1, upper(col1) upp_col1 from table1 order by upp_col1
答案 2 :(得分:1)
如果您无法更改数据库上的排序顺序(最佳选项),则未知案例字段上的索引将无济于事。如果字段数量可管理,有一种方法可以做到这一点并保持性能。你创建了一个额外的列MyFieldLower。您使用触发器来保持字段填充MyField的小写字母。
然后查询是: 在哪里MyFieldLower = LOWER(@MySearch)
这将使用索引。