Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 数据库性能-主键与唯一标识符_Sql Server_Entity Framework_Asp.net Web Api_Angular7 - Fatal编程技术网

Sql server 数据库性能-主键与唯一标识符

Sql server 数据库性能-主键与唯一标识符,sql-server,entity-framework,asp.net-web-api,angular7,Sql Server,Entity Framework,Asp.net Web Api,Angular7,我在一个数据库中添加了一个新的表,这个表可以扩展到拥有数百万条记录。 这个表有两列 RefNo的目的是提取记录详细信息并显示在UI上。我不想在UI中显示主键 这是用户在提取票证详细信息时在URL上看到的内容(id是参考号) 在WebAPI项目中,我将RefNo传递给数据库(实体框架)并提取记录。目前一切正常 我的问题是,当表包含数百万数据时,使用GUID(RefNo)而不是主键查询数据库会影响数据库性能吗 哪一个更快?我还有其他选择吗?对您的查询有很多好的评论。因为我是新来的,所以只能添加一

我在一个数据库中添加了一个新的表,这个表可以扩展到拥有数百万条记录。 这个表有两列

RefNo的目的是提取记录详细信息并显示在UI上。我不想在UI中显示主键

这是用户在提取票证详细信息时在URL上看到的内容(id是参考号)

在WebAPI项目中,我将RefNo传递给数据库(实体框架)并提取记录。目前一切正常

我的问题是,当表包含数百万数据时,使用GUID(RefNo)而不是主键查询数据库会影响数据库性能吗


哪一个更快?我还有其他选择吗?

对您的查询有很多好的评论。因为我是新来的,所以只能添加一条评论,然后发布答案

如果您/客户的团队中有指定的DBA负责维护数据库独立文件,那么Int与uniqueidentifier之间不会有任何区别


性能将几乎与
相等
下面是示例的进一步详细信息

如果您有正确的索引,查询数百万行是非常快速的。
整数
只需要4个字节,而
唯一标识符
需要16个字节。因此,相同大小的索引可以存储比
uniqueidentifier
键多4倍的
integer
键。可能存在这样的边缘情况,即索引是否完全适合内存,后者会导致更多磁盘i/o。但在“每天的情况”中,我认为这是可以忽略的。正如米奇所说,适当地索引,这不是一个问题,但你确实需要确保索引是适当的,这可能意味着不仅仅是在参考号上。你也不必使用GUID来掩盖这一点。有很多方法可以使用bigint实现这一点,而且效果会更好。相信我,bigint速度非常快,GUID是一个真正的性能杀手。不要尽可能多地使用GUID。
TicketId - PrimaryKey, Auto increment id 
RefNo - GUID, UniqueIdentifier