GUID自动增量ID =性能缓慢?

其中一个使用GUID的缺点是它是

Cumbersome to debug (where userid='{BAE7DF4-DDF-3RG-5TY3E3RF456AS10}')

并且我同意.我在想,现在16字节的ID不再被认为是一项巨大的工作,16字节的4字节ID是一个实际的妥协吗?

您可以应用聚簇索引,并对自动增量ID执行大部分串行(读取:优化)工作.合并,分配或其他大规模的承诺将使用GUID作为其主要的主力.

那么……那里的任何人都试着混合两全其美?你的承诺的结果是什么?当然,存在让PK(GUID)占用另一个索引字段旁边的所有索引空间(自动增量ID)的问题,所以我认为权衡可能是微妙的和/或特定于非常狭窄的场景.

注意:this question之前已经解决了这个问题,但是从管理参照完整性的角度来看.我很好奇如何将PK / UK配置的组合结合在一起,以及它们对性能和规模的各种影响.从本质上讲,最好将GUID用作PK,将自动增量用作非唯一索引吗?将它们作为一对独特的钥匙更好吗?

谢谢你的时间.

最佳答案 索引int很便宜,也很有用.索引GUID是昂贵的(并且从面向Web的前端安全;没有人能够循环通过GUID来从表中请求单个行).在大量插入之后,SEQ GUID确实提供了(相对)快速的索引构建,但是消除了大多数可以为公共访问提供一些安全性的“随机性”.

从这个discussion on SQL Authority开始,最终从int – > bigint – > guid是一种罕见的,在需要它之前不应该考虑它.到目前为止,用于启动新项目的最安全且最易于访问的方法是使用bigint PK AUTO_INCR,其中GUID作为非索引的非顺序字段,专门用于在数据库的整个生命周期中分割或合并shechma.它在速度方面需要预先考虑,但是只有在你有足够的行来实际关注跨实例唯一性之类的东西之后才能感受到这些影响.

点赞