我听说如果定义了表关系,SQL 会更快。
这是真的吗?
或者它可能更慢,我想知道。
最佳答案
我猜你说的是外键。这也称为参照完整性,是一种 constraint .外键不是唯一的约束类型——您也可以有唯一约束和检查约束。无论如何,insert
的引用完整性稍微慢一些,select
的引用完整性一点也不快。
原因是它必须检查 insert
ed 值以确保它们存在于另一个表中。
如果您想提高select
查询的性能,您需要将索引放在您将加入和过滤的列上。然而,索引确实是有代价的,因为它们会减慢 insert
、update
和 delete
,因为索引必须更新每次表格都这样变化。
因此,如果您的表是大量插入
/更新
,请不要添加太多索引。如果您的表主要是 select
,请尽可能使用索引。 Database Engine Tuning Advisor还可以帮助您为一些最常见的查询定义这些索引。
确保在运行查询时使用查询执行计划(Ctrl + L 在 SSMS 中),以便您可以看到 SQL Server 在做什么。您需要尽可能多的 seek
,因为这意味着它能够最有效地使用索引!
关于sql - 定义表关系后,SQL Server 2005 是否更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1352332/