Производительность поиска нечувствительности к регистру в базе данных Oracle

Мой фон БД находится на стороне MS SQL Server, где текстовое сравнение в индексах и ограничениях не чувствительна к регистру (по крайней мере, по умолчанию). Поэтому, как только у вас есть значение «ABC», назначенное для уникального столбца, вы не можете хранить второе значение «ABC», а если вы ищете «ABC» SQL Server найдут «ABC».

С Oracle разные разные, поэтому даже с уникальным индексом в текстовом столбце вы можете хранить там как «ABC», так и «ABC», и если вы ищете «ABC», вы не получите никакого результата.

AFAIK до Oracle 10Gr2 Не было никакого пути, теперь можно было установить нечувствительное сравнение на SESCON, который IMHO не является хорошим решением, потому что все зависит от дисциплины программистов.

Но что худшее с чувствительным к случаю поиска, так это то, что те, кто переписывает все поиски как operper (que_column) = верхний (quey_text) (и это то, что рекомендуется много дискуссионных потоков) в конце таблицы, даже когда Есть индекс на uey_column. Рассматривание производительности является катастрофы: я только что проверил простой поиск по таблице с полмиллионами строк, и поиск с вызовами верхнего функционала в 20 раз больше, чем поиск с только что идентификатор столбца, что подтверждает, что индекс не используется при выполнении функции -Базировал поиск.

Это действительно так, чтобы самая стандартная техника для поиска нечувствительности к дел в базе данных Oracle является применение верхних / более низких функций для поиска элементов, несмотря на плохую производительность? Или есть ли более элегантные способы решения этой проблемы?

5
задан cwallenpoole 19 September 2011 в 11:03
поделиться