微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

对于ID(实体),c# – long vs Guid,有什么优缺点

我在asp.net mvc上做一个Web应用程序,我在我的实体的long和Guid数据类型之间进行选择,但是我不知道哪一个更好.有些人说长的要快得多Guid也可能有一些优势.有人知道吗

解决方法

当GUID可以不适当的时候

GUID几乎总是会变慢,因为它们更大.这使您的索引更大.这使你的桌子更大.这意味着如果您必须全部或部分扫描您的表,则需要更长时间才能看到较少的性能.这是基于报告的系统的一个重大问题.例如,在事实表中永远不会使用GUID作为外键,因为它的长度通常是很重要的,因为事实表经常被部分扫描以生成聚合.

还要考虑使用“长”是否合适.这是一个非常大的数字.你只需要它,如果你认为你的表中有可能有超过2亿美元的条目.我很少使用它们.

GUID也可能很难使用和调试.说,“客户记录10034有一个问题,弗兰克,去看看”比说“容易得多”{2f1e4fc0-81fd-11da-9156-00036a0f876a}有一个问题…“Ints和longs也更容易在需要的时候输入查询.

呵呵,你不会再有两次GUID了.已知在非常大的断开连接的系统上发生,所以这是需要考虑的,虽然我不会在大多数应用程序中设计.

当GUID可以适当时

当您使用断开连接的系统(在实体被创建然后同步)时,GUID是适当的.例如,如果有人在您的数据库中记录移动设备并进行同步,或者您在不同的分支机构创建了实体,并在晚上同步到中央商店.这就是他们给你的灵活性.

在某些ORM方案中,GUID还允许您将实体关联而不将其持久存储到数据库. Linq to sql(我相信EF)没有这个问题,虽然有时你可能被迫将更改提交给数据库获取密钥.

如果您在客户端上创建GUID,可能由于创建的GUID不是顺序的,因为DB上的页面分割,插入性能可能会受到影响.

我的建议

在这里考虑很多东西.我的投票是不要使用它们,除非你有一个令人信服的用例.如果表现真的是您的目标,请保持桌子小.保持你的田野很小.保持您的数据库索引小和选择性.

原文地址:https://www.jb51.cc/csharp/93127.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐