C'è un piccolo calo delle prestazioni su inserti, aggiornamenti ed eliminazioni perché l'FK deve essere controllato. Per un record individuale questo sarebbe normalmente così lieve da essere impercettibile a meno che non si inizi ad avere un numero ridicolo di FK associati alla tabella (chiaramente ci vuole più tempo per controllare 100 altre tabelle rispetto a 2). Questa è una cosa buona, non negativa, poiché i database senza integrità sono inaffidabili e quindi inutili. Non dovresti barattare l'integrità con la velocità. Il calo delle prestazioni è solitamente compensato dalla migliore capacità di ottimizzare i piani di esecuzione.
Abbiamo un database di medie dimensioni con circa 9 milioni di record e FK ovunque dovrebbero essere e raramente notiamo un calo delle prestazioni (tranne su una tabella mal progettata che ha oltre 100 chiavi esterne, è un po' lento eliminare i record da questo come tutti deve essere verificato). Quasi tutti i dba che conosco che si occupano di database di grandi dimensioni, terabyte e un vero bisogno di prestazioni elevate su set di dati di grandi dimensioni insiste sui vincoli di chiave esterna perché l'integrità è la chiave di qualsiasi database. Se le persone con database di dimensioni terabyte possono permettersi il piccolissimo impatto sulle prestazioni, allora puoi farlo anche tu.
Gli FK non vengono indicizzati automaticamente e se non vengono indicizzati ciò può causare problemi di prestazioni.
Onestamente, prenderei una copia del tuo database, aggiungerei FK correttamente indicizzati e mostrare la differenza di tempo per inserire, eliminare, aggiornare e selezionare da quelle tabelle rispetto allo stesso dal tuo database senza gli FK. Dimostra che non causerai un calo delle prestazioni. Quindi mostra i risultati delle query che mostrano record orfani che non hanno più significato perché la PK a cui sono correlati non esiste più. È particolarmente efficace mostrarlo per le tabelle che contengono informazioni finanziarie ("Abbiamo 2700 ordini che non possiamo associare a un cliente" farà alzare la voce alla direzione e prenderne atto).