Re: [讨论] Primary Key的资料型态选择

楼主: BigLoser (大鲁蛇)   2014-09-08 13:29:37
※ 引述《jj09 (YA!春天快来了...)》之铭言:
: 在SQL Server上设计资料表格时
: 难免都会遇到PrimaryKey(PK)
: 要选择使用int或uniqueidentifier资料型态
: 爬过Google大神后
: 多数的人还是比较推使用int
: 主要原因是在于存取效能与资料长度二个因素下
: 最后选择int
: 因此想询问大家
: 当版友们在设计一个软件
: 这个软件的使用者除了对公司内部份
: 同时外部的一般人也会是使用者的一部份
: 会如何选择
: 为什么会做这样的选择?
: 对我来说
: 为了要避免外部和内部使用者在试着用
: 可以预期PK的状况去尝试读取别的资料纪录
: 会选择可能失去效能与储存空间的状况下
: 选择uniqueidentifier
首先..你表达的还满不清楚的,
无法理解你所说的,PK在外部使用者和内部使用者会产生不同的状况,
通常,会使用uniqueid为的是分布式的数据库,
因为uniqueid的唯一性,使得想个数据库资料合并时,
省去了相当多的麻烦,
而另一个好处就是,你可以在程式中产生,而且在写进数据库"前"就知道他的ID,
很多时候PK使用int时,我们会让他自动+1,
可是这时候,只有在这笔资料写进数据库"后",你才会知道他的ID是多少,
如果你不是分布式数据库,又或是小系统,轻型数据库(在行动装置上面跑的),
在效能和空间是有必要的考量时,当然是使用int,
因为他快得多了,
而uniqueid这个东西,你就得看产生的机制了,
有些状况,后产生的uniqueid会比之前的uniqueid还大,
这样就没有那么严重的效能问题(index 不用重排),
不过也有些server虽然后产生的uniqueid会比之前的uniqueid还大,
可是在重开机后,规则就乱掉了,
建议先测试一下。

Links booklink

Contact Us: admin [ a t ] ucptt.com