对Sybase不区分大小写的搜索

时间:2008-09-17 08:56:38

标签: performance case-sensitive sybase-ase

我厌倦了Google搜索在Sybase ASE上进行不区分大小写搜索的解决方案(Sybase数据/列名称区分大小写)。 Sybase文档自豪地说只有一种方法可以使用Upper和Lower函数进行搜索,但是谚语说,它存在性能问题。并且相信我他们是对的,如果你的桌子有巨大的数据表现如此尴尬,你永远不会再使用上下。我向其他开发者提出的问题是:你们怎么解决这个问题?

P.S。请不要建议更改排序顺序或移动到任何其他数据库,在现实世界中,开发人员不控制数据库。

3 个答案:

答案 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)

这将使用索引。