Поиск без учета регистра в Sybase - PullRequest
7 голосов
/ 17 сентября 2008

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

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

Ответы [ 3 ]

3 голосов
/ 22 июня 2010

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

Create Index INDX_MY_SEARCH on TABLE_NAME(LOWER(@MySearch)
2 голосов
/ 23 ноября 2011

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

select col1, upper(col1) upp_col1 from table1 order by upp_col1
1 голос
/ 17 сентября 2008

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

Тогда запрос: ГДЕ MyFieldLower = LOWER (@MySearch)

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

...