sql – 主键为文本[已关闭]

前端之家收集整理的这篇文章主要介绍了sql – 主键为文本[已关闭]前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我在教育期间(约4年前)的数据库课程中,我认为建议避免使用字符串作为主键的数据类型.

有人可以告诉我,在sql中为主键选择字符变化的数据类型有什么优点和缺点,上述前提是多少?

N.B .:(我使用Postgresql数据库).我也在处理一个情况,当你需要从另一个引用这样的表,从而把外键字符变化的数据类型.也请考虑.

解决方法

您选择字符数据类型作为主键字段的优点是您可以选择可以显示的数据.例如,您可以将电子邮件地址作为用户表的关键字段.这消除了对附加列的需要.另一个优点是如果您有一个公用数据表,其中包含多个其他表的索引(请注意FINSET,CONTACT和ADMIN表的外部引用的NOTES表),您可以很容易地知道这来自哪个表(例如,您的FINANCE表具有F00001的索引,CONTACT表的索引为C00001等).我反对这种做法,恐怕这个答复的缺点会更大.

缺点如下:

>在Postgresql中,串行数据类型正是因为这个原因而存在的
>数字索引将按顺序输入,并且需要完成最小的重新索引(即如果您有一个带有Apple,Carrot键和要插入香蕉的表格,则表格必须在索引周围移动,以便将香蕉插入到中间,如果索引为数字,则很少在索引的中间插入数据).
>与数据取消关联的数值索引不会改变.
>数字索引较短,长度可以固定(4字节,无论您选择的是varchar长度).

在您的情况下,您仍然可以将外键放在数字索引上,所以我不知道为什么要强制它是一个varchar类型.数字字段的搜索和过滤在理论上比文本字段更快,因为服务器将被强制转换数据.一般来说,您将具有非群集的数字主键,然后在数据列上创建一个要过滤的集群密钥.

这些是编写sql时的通用标准,但是当涉及到基准测试时,您只会发现varchar列在加载和过滤方面比整数列慢一些.只要您的主键不改变EVER,那么你没关系.

猜你在找的MsSQL相关文章