Die kurze Antwort ist "Nein" Derzeit gibt es auf keiner DBMS-Plattform eine Indexstruktur, die Teilübereinstimmungen einer Regex wie dieser indexiert.
Die lange Antwort ist, dass eine führende Konstante auf einer Wildcard-Übereinstimmung (z. B. 'foo_'
) als ein Präfix für Indexübereinstimmungen verwendet werden kann. Viele DBMS-Plattformen optimieren dies und verwenden einen Index (falls verfügbar), um das Präfix aufzulösen. Dies ist jedoch nicht so clever wie eine vollständige Regex, und die Indizierung kann nur verwendet werden, wenn Sie ein konstantes Präfix haben.
Die noch längere Antwort ist, dass es Algorithmen wie RETE gibt, die partielle Übereinstimmungen wie diese optimieren werden. Dies trifft möglicherweise zu, wenn Sie Ihre Übereinstimmungen als Vorwärtsverkettungsregeln und nicht als reguläre Ausdrücke ausdrücken können.
Rete funktioniert durch Berechnen partieller Übereinstimmungen und präsentiert nur Regeln, die von dieser partiellen Übereinstimmung erreicht werden können, also ist es effizienter als O (n) (mehr wie O (log n), aber ich bin mir nicht sicher Zeitkomplexität), um n Regeln gegen eine Tatsache abzustimmen.