Kirill
SQL Error [42704]: ОШИБКА: для типа данных text не определён класс операторов по умолчанию для метода доступа "gin"
Подсказка: Вы должны указать класс операторов для индекса или определить класс операторов по умолчанию для этого типа данных.
1. Если регулярка не с начала строки, то единственное что может её ускорить, насколько я знаю, триграммный индекс из расширения pg_trgm USING GIN(column gin_trgm_ops). Можно попробовать и GIST.
Без нескольких фиксированных символов внутри регулярки он бесполезен или даже вреден. На моих данных
Примеры на таблице в 2 млн записей:
'^\d{2}:\d{2}$'
- Index Scan, 3,3 секунды, 60 строк
'^[a-z]$'
- Index Scan, 0,003 секунды, 0 строк
'[a-z]'
- Index Scan, 3 секунды, 0 строк
'^\d{2}:\d{2}:\d{7}$'
и '^\d{2}:\d{2}:\d+$'
- Seq scan, 2,5 / 1,2 секунды, 18336
'^\d{2}:\d{2}:000\d{4}$'
- Index Scan, 1,3 секунды, 776 строк
'^\d{2}\:\d{2}\:0001\d{3}$'
- Index Scan, 0,7 секунды, 40 строк
'^\d{2}\:\d{2}\:00010\d{2}$'
- Index Scan, 0,25 секунды, 40 строк
2. Если у вас не совсем полноразмерная регулярка, то вам может подойти полнотекстовый поиск. Для поиска "лексем начинающихся с этих букв" используйте to_tsquery('набор правил', 'слово:*'). Но там есть свои заморочки, в частности стандартный словарь стоп-слов.