7

我已经厌倦了谷歌搜索在 Sybase ASE 上进行不区分大小写搜索的解决方案(Sybase 数据/列名区分大小写)。Sybase 文档自豪地说,只有一种方法可以进行此类搜索,即使用 Upper 和 Lower 函数,但俗话说,它存在性能问题。相信我他们是对的,如果你的表有大量数据,那么性能会很尴尬,你永远不会再使用 Upper 和 Lower。我对其他开发人员的问题是:你们如何解决这个问题?

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

4

3 回答 3

3

尝试创建一个functional index, 像

Create Index INDX_MY_SEARCH on TABLE_NAME(LOWER(@MySearch)
于 2010-06-22T07:01:36.237 回答
2

在您的选择语句中添加额外的大写或小写列。例子:

select col1, upper(col1) upp_col1 from table1 order by upp_col1
于 2011-11-23T02:31:12.353 回答
1

如果您无法更改数据库的排序顺序(最佳选项),那么未知案例字段的索引将无济于事。如果字段的数量是可管理的,那么有一种方法可以做到这一点并保持性能。您制作了一个额外的列 MyFieldLower。您使用触发器来保持字段用小写的 MyField 填充。

那么查询是: WHERE MyFieldLower = LOWER(@MySearch)

这将使用索引。

于 2008-09-17T09:07:12.193 回答