SQL Server - Guid VS。长的

2023-11-22

到目前为止,我一直在使用 C#“Guid = Guid.NewGuid();”方法生成一个唯一的 ID,该 ID 可以使用 Linq to SQL 作为 ID 字段存储在我的一些 SQL Server 数据库表中。 我被告知,出于索引原因,使用 GUID 是一个坏主意,我应该使用自动递增的 Long 来代替。使用 long 会加速我的数据库事务吗?如果是这样,我该如何生成 Long 类型的唯一 ID?

Regards,


两者都有优点和缺点,这完全取决于你如何使用它们。

如果您需要可以跨多个数据库工作的标识符,那么您就需要 GUID。 Long 有一些技巧(手动为每个数据库分配不同的种子/增量),但这些技巧不能很好地扩展。

就索引而言,如果索引是聚集的(默认情况下主键是聚集的,但这可以针对您的表进行修改),Long 将提供更好的插入性能,因为表不需要在每次插入后重新组织。

然而,就并发插入而言,Long(身份)列将比 GUID 慢 - 身份列生成需要一系列独占锁来确保只有一行获得下一个序列号。在许多用户始终插入许多行的环境中,这可能会影响性能。在这种情况下 GUID 生成速度更快。

在存储方面,GUID 占用的空间是 Long 的两倍(8 字节 vs 16 字节)。然而,如果 8 字节会对一个叶子中容纳的记录数量产生显着影响,从而在平均请求期间从磁盘中提取的叶子数量产生显着差异,则取决于行的总体大小。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server - Guid VS。长的 的相关文章

随机推荐

  • Python:重载特定类型的运算符

    我希望能够让我的类的运算符以我定义的方式与常规类型进行交互 比方说 我有 class Mynum object def init self x self x x def add self other return self x other
  • 如果出现平局,Python 会选择哪个最大值?

    当使用max Python 中的函数查找列表 或元组 字典等 中的最大值 并且最大值存在并列 Python 选择哪一个 是随机的吗 例如 如果一个人有一个元组列表并且一个人选择一个最大值 使用key 基于元组的第一个元素 但有不同的第二个元
  • React 组件中的 Children 属性

    我现在正在学习反应 这是代码的链接 http redux js org docs basics ExampleTodoList html 我有点难以理解这部分代码中发生的事情 const Link active children onCli
  • 强制 JSON.stringify() 发出 NaN / Infinity 或这样做的 JS JSON 库

    我正在研究向使用 JSONRPC 进行客户端 服务器交互的现有科学应用程序添加 NaN Infinity 支持的可行性 许多 JSON 库确实处理 在某些情况下可选 NaN 和 Infs 例如 Python json读取和写入 Java J
  • Java 使用实例方法而不是类/静态方法为每个实例化对象创建唯一 ID

    对此相当陌生 所以我希望标题中的术语正确 我想弄清楚如何创建一个实例方法这将执行以下操作 返回一个ID号 由于每个对象都是从类构造函数创建的 实例化 因此会为其分配一个唯一的整数 ID 号 第一个 ID 号是 1 当实例化新对象时 将分配连
  • MediaPlayer setDataSource 需要最佳实践建议

    看完之后 媒体播放 and 媒体播放器 android 文档我仍然很困惑 需要有经验的建议设置数据源重载方法 我在用MediaPlayer in a Service我的项目中的组件将是前台服务播放音乐时 我的音乐文件 mp3 位于res r
  • Eureka 服务给出请求执行错误?

    请求执行错误 端点 DefaultEndpoint serviceUrl http localhost 8761 eureka 当我在 docker windows 中运行时 它会给出 但是当我在 STS 中的 spring boot 应用
  • 如何识别脚本中是否使用了bash或dash?

    我正在编写一个 bash 脚本 在 Ubuntu 中使用 sh 命令时它会抛出错误 它似乎与 dash 不兼容 我正在学习这个主题 所以我想检测是否使用 dash 而不是 bash 来抛出错误 如何在脚本上下文中检测它 有可能吗 You c
  • 从 Eclipse 导入到 Android Studio 后无法运行任务 ':app:dexDebug" 执行失败

    有一个在 Eclipse 4 4 2 ADT 中运行的 Android 项目 在 Linux Ubuntu 14 10 上运行 我已经导入到 Android Studio 1 1 0 并设法摆脱了最初的编译错误 我想要做的下一件事是在我的手
  • Pandoc:带有 YAML 元数据的模板

    我使用 pandoc 生成带有 YAML 元数据的 index html 我知道从 pandoc 模板迭代关联数组 YAML Author Mastropiero Author Gunter Fraggen TEMPLATE for aut
  • 使用组件进行 Angular 2 表单级别验证

    在 Angular 2 中 如何在自定义组件中添加输入控件 并将其绑定到父组件中的表单控件容器 为简洁起见 简化了以下代码 例如 我有一个表单组件 请注意按钮禁用绑定 Component selector my form template
  • 如何在python中将数据模拟为request.Response类型

    我想写一些测试用例来练习对象检查在 isinstance obj requests Response 逻辑中 在我创建模拟数据作为 requests post 的返回值之后 模拟数据的类型始终是模拟类 这样 我如何重写模拟数据 使模拟数据可
  • 德米特混乱法则

    我希望有人能帮我解释一下德墨忒耳定律 如果我有一个类 我假设它是一个聚合根 并且其中有一个子类的集合 通过聚合根访问这些子类来更新它们的属性是否非法 e g public class Company company has a number
  • 将 text/xml 读入 ASP.MVC 控制器

    如何将文本 xml 读入 ASP MVC 控制器上的操作 我有一个 Web 应用程序 它可能会从两个不同的源接收 POSTed Xml 因此 Xml 的内容可能会有所不同 我希望控制器上的默认操作能够读取 Xml 但是我很难了解如何首先将
  • VC++ 2010 中“仅可移动类型”的问题

    我最近安装了 Visual Studio 2010 Professional RC 来尝试一下并测试 VC 2010 中实现的一些 C 0x 功能 我实例化了一个std vector of std unique ptr 没有任何问题 但是
  • javascript:函数调用自身

    我想下面的代码 jQuery mybutton click function do something 我怎么能回忆起这个 匿名 函数 我无法为此函数命名 var xfun function do something jQuery mybu
  • Delphi SOAP 数组问题

    我有一个用 delphi 创建的 SOAP 应用程序 输入到达服务器正确 但输出始终为空 r创建了对象 响应 但是length r notes 始终为 0 如果我在没有数组的情况下执行应用程序 它也可以正常工作 哪里有问题 三天的谷歌搜索和
  • 使用Jquery从Json对象获取父节点

    我试图通过子节点获取 json 对象中的父节点 我从客户端获得的 json 是一个多级目录层次结构 层次结构就像 Root Folder 1 folder1 a folder1 b folder 2 folder 3 folder3 a 我
  • PHP-通过 URL 获取文件类型

    我想使用 PHP 通过 URL 获取文件类型 例如 image gif 我尝试过 上面的代码给了我一个空白页 下面的代码返回 3 我哪里错了 已解决 使用 Fileinfo 获取内容类型
  • SQL Server - Guid VS。长的

    到目前为止 我一直在使用 C Guid Guid NewGuid 方法生成一个唯一的 ID 该 ID 可以使用 Linq to SQL 作为 ID 字段存储在我的一些 SQL Server 数据库表中 我被告知 出于索引原因 使用 GUID