sql-server - SQL Server 上的 Int PK 内部联接与 Guid PK 内部联接。执行计划

标签 sql-server database sql-server-2008 database-design

我刚刚做了一些 Int PK join Vs Guid PK 的测试。

表结构和记录数看起来像这样:

alt text

在这两种情况下,使用 EF4 的 CRUD 操作性能非常相似。

众所周知,在连接中使用 Int PK 比字符串具有更好的性能。 所以带有INNER JOINS的SQL server执行计划是完全不同的

这是一个执行计划:

alt text

据我了解,根据上面的执行计划,Int join 具有更好的性能,因为它为聚集索引扫描占用的资源更少,并且它有两种方式,我说的对吗?

有人可以更详细地解释这个执行计划吗?

这个例子是否足以说明 Int PK 在连接中有更好的性能?

最佳答案

Kimberly Tripp(索引女王)有一篇关于该主题的优秀博客文章:

Disk space is cheap.... that's not the point!

她很好地展示了“磁盘空间很便宜——使用 GUID 而不是 INT 没有坏处”的说法在很多方面都是完全虚假的。

关于sql-server - SQL Server 上的 Int PK 内部联接与 Guid PK 内部联接。执行计划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4600918/

相关文章:

sql-server - 将整数列表传递给存储过程

sql-server - 使用 HL7 消息在我的 SQL Server 中插入数据

database - 在 Laravel 5.4 中播种时出现 QueryException "Array To String Conversion"

测试数据的 SQL 数据库设计

sql-server - 在数据库中存储英尺/英寸

sql-server - MARS TDS header 包含错误 - ASP.NET Core + EF Core 2.1.4 + Azure SQL Server

c# - ASP.NET Entity Framework 插入(如果不存在)

java - Neo4J 关系中的合并

javascript - 防止 Postgres 中的更新冲突

sql - 这是为此报告编写 SQL 的最佳方式吗?