Tak, posiadanie ograniczeń klucza obcego może poprawić wydajność zapytań. Istnieją różne przekształcenia, które są dostępne dla optymalizatora, gdy istnieją odpowiednie ograniczenia klucza obcego, które nie są ogólnie dostępne. Na przykład, jeśli miałbyś dołączyć do A
i B
ale wybierz tylko dane z B
, optymalizator może wyeliminować A
całkowicie z planu zapytania, jeśli istniało ograniczenie klucza obcego (ten rodzaj rzeczy jest bardzo przydatny, gdy masz przydatne widoki, które łączą się w większej liczbie tabel, niż wymaga tego bieżące zapytanie, ponieważ nie musisz wymieniać koszty wydajności dodatkowych łączeń w stosunku do ponownego użycia kodu z istniejącego widoku). Przydają się również, gdy robisz takie rzeczy, jak przepisywanie zapytań w celu przepisania zapytania w celu użycia zmaterializowanego widoku w hurtowni danych/systemie typu DSS.
Tom Kyte przygotował prezentację Metadata Matters, która mówi o tym, jak różne rodzaje ograniczeń, wraz z innymi fragmentami metadanych, mogą wpływać na optymalizator.