7

Sybase ASEで大文字と小文字を区別しない検索を実行するためのソリューションをグーグルで検索することにうんざりしています(Sybaseデータ/列名では大文字と小文字が区別されます)。Sybaseのドキュメントには、Upper関数とLower関数を使用するこのような検索を実行する方法は1つしかないと誇らしげに記載されていますが、格言にはパフォーマンスの問題があります。そして、それらが正しいと信じてください。テーブルに膨大なデータがある場合、パフォーマンスは非常に厄介であり、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 ステートメントに大文字または小文字の列を追加します。例:

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

If you cannot change the sort-order on the database(best option), then the indexes on unknown case fields will not help. There is a way to do this and keep performance if the number of fields is manageable. You make an extra column MyFieldLower. You use a trigger to keep the field filled with a lower case of MyField.

Then the query is: WHERE MyFieldLower = LOWER(@MySearch)

This will use indexing.

于 2008-09-17T09:07:12.193 に答える