Verdade seja dita, não apenas você não verá muita perda de desempenho por ter restrições de chave estrangeira no banco de dados, mas também verá aprimoramentos de desempenho. O otimizador de consultas do SQL Server foi criado com base no conceito de chaves primárias e externas, além de outros tipos de restrições de dados. Se estes estiverem implementados e aplicados, o otimizador poderá tirar proveito deles para obter um melhor desempenho. Aqui está uma postagem de blog com um exemplo simples que mostra isso em ação.
Se você estiver em um caso extremo em que realmente possui mais inserções do que leituras (e atualizações e exclusões exigem leituras, então elas geralmente acabam adicionando à contagem de leituras), talvez faça sentido remover restrições dos dados para desempenho, talvez . Mas como a grande maioria dos bancos de dados é orientada para leitura, você está sacrificando o desempenho, sem aprimorá-lo.
E nada disso menciona o fato de que a integridade dos dados é melhor gerenciada no banco de dados, já que você só precisa criá-los uma vez, onde, como se você fizesse todo o trabalho em código, talvez seja necessário várias vezes para vários aplicativos (a menos que você projete sua camada de acesso a dados com cuidado e exige que todos os aplicativos acessem o banco de dados para passar pela mesma camada).
Se você estiver usando um sistema de banco de dados relacional, eu digo, por que não usá-lo realmente? Se você não precisar de dados relacionais, vá com o Hadoop ou outra coisa.