2008-09-17 11 views
7

Я устал от Google для поиска без учета регистра в Sybase ASE (имена данных/столбцов Sybase чувствительны к регистру). Документация Sybase с гордостью говорит, что есть только один способ сделать такой поиск, который использует функции верхнего и нижнего уровня, но поговорка идет, у нее проблемы с производительностью. И поверьте мне, что они правы, если ваш стол имеет огромные данные, производительность настолько неудобна, что вы больше никогда не будете использовать Upper и Lower. Мой вопрос к разработчикам-разработчикам: как вы, ребята, решаете это?Нечувствительный к регистру поиск по Sybase

P.S. Не рекомендуется менять порядок сортировки или переходить на любую другую базу данных, в реальном мире разработчики не контролируют базы данных.

ответ

1

Если вы не можете изменить порядок сортировки в базе данных (лучший вариант), то индексы в неизвестных полях случая не помогут. Существует способ сделать это и сохранить производительность, если количество полей управляемо. Вы делаете дополнительную колонку MyFieldLower. Вы используете триггер, чтобы заполнить поле в нижнем регистре MyField.

Затем запрос: ГДЕ MyFieldLower = НИЖНЯЯ (@MySearch)

Это будет использовать индексацию.

3

Попробуйте создать functional index, как

Create Index INDX_MY_SEARCH on TABLE_NAME(LOWER(@MySearch) 
2

Добавить дополнительный верхний или нижний столбец дела в вашем отборном заявлении. Пример:

select col1, upper(col1) upp_col1 from table1 order by upp_col1