Sì, la presenza di vincoli di chiave esterna può migliorare le prestazioni delle query. Esistono varie trasformazioni aperte all'ottimizzatore quando esistono vincoli di chiave esterna appropriati che non sono generalmente disponibili. Ad esempio, se dovessi unirti a A
e B
ma seleziona solo i dati da B
, l'ottimizzatore potrebbe eliminare A
dal piano di query interamente se fosse presente un vincolo di chiave esterna (questo genere di cose è molto utile quando si hanno visualizzazioni utili che si uniscono in più tabelle di quelle strettamente necessarie alla query corrente perché non è necessario scambiare il costi di prestazione degli extra join rispetto al riutilizzo del codice dall'utilizzo di una vista esistente). Sono utili anche quando si eseguono operazioni come la riscrittura di query per riscrivere una query per utilizzare una vista materializzata in un data warehouse/sistema di tipo DSS.
Tom Kyte ha una presentazione Metadata Matters che parla di come vari tipi di vincoli, insieme ad altri metadati, possono influenzare l'ottimizzatore.