sql - 定义表关系后,SQL Server 2005 是否更快?

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

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

这是真的吗?

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

最佳答案

我猜你说的是外键。这也称为参照完整性,是一种 constraint .外键不是唯一的约束类型——您也可以有唯一约束和检查约束。无论如何,insert 的引用完整性稍微慢一些,select 的引用完整性一点也不快。

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

如果您想提高select 查询的性能,您需要将索引放在您将加入和过滤的列上。然而,索引确实是有代价的,因为它们会减慢 insertupdatedelete,因为索引必须更新每次表格都这样变化。

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

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

关于sql - 定义表关系后,SQL Server 2005 是否更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1352332/

相关文章:

php - sql - 按其他关系计数排序查询

sql - 合并 2 个查询的结果,其中连接列可能在任一表中缺少数据

sql - 如何授予 SQL Server 代理访问权限以便能够写入/修改系统文件?

java - EclipseLink - 在执行查询期间从行读取的主键被检测为空。主键不能包含 null

sql - 获取从星期二到星期一的一周中的数量总和

java - 使用 Java 从文件中读取日期并更新数据库表

sql - 如何使用 OR 条件优化日期范围

sql-server - 合并两个 SQL Server 数据库

SQL 更新查询导致触发器中有两行

linq - LINQtoSQL 中区分大小写的 Where 子句?