Если у вас есть ограниченный набор регулярных выражений для сопоставления, вы можете создать таблицу с первичным ключом вашей таблицы и полем, указывающим, соответствует ли оно этому регулярному выражению, который вы обновите в триггере, а затем проиндексировать ключ таблиц в этот стол. Это меняет небольшое уменьшение количества обновлений и скорости вставки для вероятно большого увеличения скорости выбора.
В качестве альтернативы, вы можете написать функцию, которая сравнивает ваше поле с этим регулярным выражением (или даже передать регулярное выражение вместе с полем, которое вы сопоставляете с функцией), а затем создать функциональный индекс на вашей таблице для этой функции. Это также предполагает фиксированный набор регулярных выражений (но вы можете добавить новые совпадения регулярных выражений таким образом).
Если регулярное выражение динамически создается из пользовательского ввода, вам может потребоваться выполнить сканирование таблицы или изменить пользовательское приложение, чтобы создать более простой поиск, например , например поле «значение%» , которое будет использовать индекс по полю ( '% value%' не будет).