使用外键的SQL表性能

使用外键的SQL表性能,sql,performance,foreign-keys,Sql,Performance,Foreign Keys,我有一个网站,需要做很多积极的搜索用户。我有一个用户表,其中包含指向所有完整用户详细信息的链接,但只有在查看您自己的帐户时才真正感兴趣。在搜索其他用户时,您需要的信息非常有限,因此为了使搜索更快、更高效,每次更新用户详细信息时,该代码将一个条目写入一个名为UserLight的单独表中,该表只包含大约8列,并且都是纯数据,即没有到其他子表或集合对象的链接,只是字符串数据以提高速度。每个用户一次只能有一个UserLight条目,它是其帐户对其他用户显示方式的摘要表示 我的问题是关于性能,我将User

我有一个网站,需要做很多积极的搜索用户。我有一个用户表,其中包含指向所有完整用户详细信息的链接,但只有在查看您自己的帐户时才真正感兴趣。在搜索其他用户时,您需要的信息非常有限,因此为了使搜索更快、更高效,每次更新用户详细信息时,该代码将一个条目写入一个名为UserLight的单独表中,该表只包含大约8列,并且都是纯数据,即没有到其他子表或集合对象的链接,只是字符串数据以提高速度。每个用户一次只能有一个UserLight条目,它是其帐户对其他用户显示方式的摘要表示


我的问题是关于性能,我将UserId作为用户表的外键约束是否重要?因此,如果用户中没有相应的行,则无法创建UserLight条目,并且当删除用户行时,它会自动级联并删除UserLight条目。这很理想,我希望这样做,但我只是想知道,在UserLight表上使用此FK约束是否会以任何方式降低对此表的读写操作的性能?如果是这样,我很乐意放弃FK约束,拥有一个完全隔离的表,没有约束或对其他对象的外部引用,以提高性能,只需手动管理内务,但是,如果FK约束根本不影响性能,我更愿意保留它。

它不会影响您的性能,相反,它更愿意约束数据,以避免插入/删除/更新异常

外键约束与性能关系不大。拥有正确的连接和正确的索引将对性能造成更大的损害。至于它将如何影响您的数据库?谁知道呢?有太多的因素,你需要进行测试,有没有发现。实际上,它们在级联删除的情况下会产生影响,这取决于你的dbms。Sql server Examle外键还可以提高性能,因为它为优化器提供了有关数据关联方式的更多信息。例如,请参见此处:或者此处并不意味着您需要删除外键,只需注意级联删除。在这些情况下,请坚持进行重试