定义表关系时SQL Server 2005会更快吗?

时间:2009-08-29 20:45:33

标签: sql sql-server sql-server-2005 tsql

我听说如果定义表关系,SQL会更快。

这是真的吗?

或者它可能更慢,我想知道。

2 个答案:

答案 0 :(得分:4)

我的猜测是你在谈论外键。这也称为引用完整性,是constraint的一种。外键不是唯一的约束类型 - 您也可以具有唯一和检查约束。无论如何,insert的参照完整性略慢,而select的参考完整性则不快。

原因是它必须检查insert ed值以确保它们存在于另一个表中。

如果要提高select查询的性能,您希望将索引放在要加入和过滤的列上。但是,索引确实需要付出代价,因为它们会降低insertupdatedelete的速度,因为每次表格更改时索引都必须更新。“ / p>

因此,如果您的表格数量很大insert / update,请不要添加太多索引。如果您的表格主要是select,请尽可能使用索引。 Database Engine Tuning Advisor可以帮助您为一些最常见的查询定义这些索引。

确保在运行查询时使用查询执行计划(SSMS中的 Ctrl + L ),以便您可以看到SQL Server正在执行的操作。你想要尽可能多的seek,因为这意味着它能够最有效地使用索引!

答案 1 :(得分:3)

如果定义了表关系,SQL就不会更快。

索引可提高效果; 参照完整性(表关系)根据业务需求确保数据质量。