Krótka odpowiedź brzmi "Nie". Na żadnej platformie DBMS nie ma obecnie struktury indeksu, która będzie indeksować częściowe dopasowania takiego wyrażenia.
Długa odpowiedź jest taka, że wiodąca stała na dopasowaniu z symbolem wieloznacznym (np. 'foo_'
) może być używana jako prefiks dla dopasowań indeksu. Wiele platform DBMS zoptymalizuje to i użyje indeksu (jeśli jest dostępny), aby rozwiązać prefiks. Jednak nie jest to coś tak sprytnego jak pełne wyrażenie regularne, a indeksowanie może być używane tylko wtedy, gdy masz stały prefiks.
Jeszcze dłuższą odpowiedzią jest to, że istnieją algorytmy, takie jak RETE, które optymalizują częściowe dopasowania w ten sposób. Może to mieć zastosowanie, jeśli możesz wyrazić swoje dopasowania jako reguły dotyczące łączenia łańcuchowego, a nie wyrażenia regularne.
Rete działa przez obliczanie częściowych dopasowań i przedstawia tylko reguły, które można osiągnąć dzięki temu częściowemu dopasowaniu, więc jest bardziej efektywny niż O (n) (bardziej jak O (log n), ale nie jestem pewien dokładnego czas złożoności) dla dopasowania n reguł wobec faktu.