Это зависит от данных и шаблона.Если вы используете like 'a%'
, то Oracle может использовать индексы BTree для поиска совпадений, потому что может искать btree с началом шаблона, а затем рассматривать только поддерево.
Это не работает дляLIKE '%a'
но вы можете обойти это, создав вычисляемый столбец, который переворачивает все значения из столбца, который вы хотите найти (так вы получаете шаблон выше).
Если вы используете хешированные индексы, мало чтоOracle может делать, но сканировать весь индекс.Это может быть быстрее, когда есть только несколько различных значений.
Я не уверен, может ли INSTR
когда-либо использовать индекс, потому что у него нет фиксированной привязки.
Так же, как со всемивопросы производительности:
- Заполните базу данных некоторыми реалистичными данными теста и запустите несколько тестов.
- Всегда пишите свой код так, чтобы его можно было легко оптимизировать позже, когда вы знаете об узких местах
- Никогда не догадайтесь, что может быть медленным.Вы будете ошибаться в 90% случаев.Всегда измеряйте.