По правде говоря, вы не только не увидите значительных потерь производительности из-за ограничений внешнего ключа в базе данных, но вы также увидите улучшения производительности. Оптимизатор запросов SQL Server построен на основе концепции первичных и внешних ключей, а также других типов ограничений данных. Если они установлены и применяются, оптимизатор может использовать их для повышения производительности. Вот сообщение в блоге с простым примером , демонстрирующим его в действии.
Если вы находитесь в крайнем случае, когда у вас действительно больше вставок, чем чтений (а для обновлений и удалений требуются чтения, поэтому они обычно заканчиваются добавлением к количеству считываний), тогда может иметь смысл удалить ограничения из данных для производительности, возможно, , Но поскольку подавляющее большинство баз данных ориентировано на чтение, вы жертвуете производительностью, а не повышаете ее.
И ни в одном из них не упоминается тот факт, что целостность данных лучше обрабатывается в базе данных, поскольку вам нужно создать ее только один раз, когда, как будто вы делаете всю работу в коде, вам, возможно, придется делать это несколько раз для нескольких приложений (если вы не проектируете ваш уровень доступа к данным тщательно и требует, чтобы каждое приложение обращалось к БД, чтобы пройти через тот же слой).
Если вы используете систему реляционных баз данных, я говорю, почему бы не использовать ее на самом деле. Если вам не нужны реляционные данные, используйте Hadoop или что-то еще.