Использование функций и операторов почти всегда исключает использование индексов. INSTR()
определенно относится к этой категории. LIKE
с постоянным шаблоном и без подстановочных знаков в начале шаблона является исключением.
Если вам нужно обработать такой сценарий ios, вы можете исследовать другие базы данных (особенно Postgres), которые имеют более широкий диапазон возможностей индексирования, включая индексы, которые могут помочь для частичных совпадений строк.
Вы также можете реализовать нечто подобное в MySQL, используя n-граммы. Однако это потребует отдельной структуры данных и некоторого усложнения.
Вы также можете реализовать это, используя полнотекстовый индекс, но изменяя данные при вводе. Например, вы можете извлечь соседние трехбуквенные комбинации и добавить их в индекс, так:
'Frank' --> 'Frank Fra ran ank'