La risposta breve è "No". Non esiste una struttura di indice attualmente disponibile su qualsiasi piattaforma DBMS che indicherà corrispondenze parziali di una regex come questa.
La risposta lunga è che una costante iniziale su una corrispondenza con caratteri jolly (ad esempio 'foo_'
) può essere utilizzata come prefisso per le corrispondenze indice. Molte piattaforme DBMS lo ottimizzeranno e utilizzeranno un indice (se disponibile) per risolvere il prefisso. Tuttavia, questo non è affatto intelligente come una regex completa e l'indicizzazione può essere utilizzata solo se si dispone di un prefisso costante.
La risposta ancora più lunga è che ci sono algoritmi come RETE che ottimizzeranno corrispondenze parziali come questa. Questo potrebbe essere applicabile se è possibile esprimere le proprie corrispondenze come regole di produzione per il collegamento in avanti piuttosto che per le espressioni regolari.
Rete funziona calcolando corrispondenze parziali e solo presentando regole che possono essere raggiunte da questa corrispondenza parziale, quindi è più efficiente di O (n) (più come O (log n) ma non sono sicuro dell'esatto complessità temporale) per far corrispondere le regole a un fatto.