当前位置:  开发笔记 > 数据库 > 正文

在MS SQL中使用GUID作为主键是不是一个坏主意?

如何解决《在MSSQL中使用GUID作为主键是不是一个坏主意?》经验,为你挑选了3个好方法。

我们有一个使用UniqueIdentifier作为每个表的主键的系统.我们注意到这是一个坏主意.我已经看过关于这个主题的类似帖子,但我对任何MS SQL性能以及由于这个决定我可能遇到的其他潜在问题感兴趣.



1> Chris Craft..:

有利有弊:

本文涵盖了一切.

GUID优点

每个表,每个数据库,每个服务器都是唯一的

允许轻松合并来自不同数据库的记录

允许跨多个服务器轻松分发数据库

您可以在任何地方生成ID,而不必往返数据库

大多数复制方案无论如何都需要GUID列

GUID缺点

它比传统的4字节索引值大4倍; 如果你不小心,这可能会产生严重的性能和存储影响

调试很麻烦(其中userid ='{BAE7DF4-DDF-3RG-5TY3E3RF456AS10}')

生成的GUID应该是部分顺序的以获得最佳性能(例如,SQL 2005上的newsequentialid())并允许使用聚簇索引


你已经习惯了调试,而且性能上升并不是那么糟糕.

2> SQLMenace..:

我上周写了一篇关于这个的文章,其中有一些代码可以告诉你会发生什么:一些简单的代码来显示Newid和Newsequentialid之间的区别

基本上,如果您使用newid()而不是Newsequentialid(),如果您的PK是聚簇索引(默认情况下将是这样),您会得到可怕的页面拆分



3> Brandon..:

就个人而言,我会使用一个int或bigint作为PK,但只需在另一个"Guid"列中输入那些你需要一个不可饶恕的"键"来记录该记录的情况,并在插入行时生成Guid.


双ID的优秀理念! - 您可以公开使用GUID并在内部使用整数 - 例如对于连接!+1
推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有