Скажите поле «Имя» в таблице 1 и «NameDetail» находится в таблице 2. Они оба являются индексами.Substr() удаляет использование индекса
Name NameDetail
Jack JackJohnson
Kent KentJacobs
Я пытаюсь присоединиться к «Name» = «NameDetail». Но так как они не совсем то же самое. Я действительно пытаюсь присоединиться к «Name» = substr (NameDetail, 0,4); Предполагая, что он всегда будет первым 4 символами. Использование substr() удалит использование индекса, что значительно замедлит запрос.
Я пробовал использовать подстановочный знак, где «NameDetail» как «Name» || '%', но это не сработало. Что я здесь делаю неправильно? Кроме того, я являюсь пользователем базы данных. Не разработчик, поэтому я бы не смог создать новый индекс. Будьте очень благодарны, если кто-то может помочь. Благодаря!
Какая таблица является драйвером - то есть, в какую сторону вы хотите присоединиться, и которая более избирательна? Что означает «не работает» для подстановочного подхода - вы на самом деле запустили то, что вы там написали, с строковым литералом '' Name '' или '' NameDetail ", как« Name »|| '%'' с идентификатор столбца? –
Возможно, вы захотите создать [Function-Based Index] (https://oracle-base.com/articles/8i/function-based-indexes). Также имейте в виду, что индекс на основе функций [не может содержать значение «NULL») (https://docs.oracle.com/cd/E11882_01/appdev.112/e41502/adfns_indexes.htm#ADFNS00505). Тем не менее, вы можете использовать функцию 'NVL', чтобы ваш индекс всегда имел значение, отличное от' NULL'. – AndrewMcCoist