在数据库课程中,我在我的教育(大约)。4年前,我认为应该避免使用字符串作为主键的数据类型。
可以告诉我选择一个字符的优缺点吗?在SQL中为主键选择数据类型,以及上面的前提在多大程度上是正确的?
注:(我正在使用PostgreSQL数据库)。我还在处理这样一种情况,您需要从另一个表中引用这样的表,从而将外键放在字符变化的数据类型上。请也考虑到这一点。
发布于 2013-03-18 13:27:10
选择字符数据类型作为主键字段的优点是可以选择它可以显示的数据。例如,可以将电子邮件地址作为用户表的关键字段。这样就不需要增加一个列了。另一个优点是,如果您有一个公共数据表,它包含多个其他表的索引(假设一个便笺表具有对财务、联系人和管理表的外部引用),那么您可以很容易地知道它来自哪个表(例如,您的财务表有一个F00001索引,CONTACT表有一个C00001索引,等等)。因为我反对这样的方法,所以在这个答复中,我恐怕缺点会更大。
缺点如下:
在您的例子中,您仍然可以将外键放在数字索引上,所以我不知道为什么要强制它为varchar类型。理论上,搜索和筛选数字字段的速度要比文本字段快,因为服务器将被迫首先转换数据。一般来说,您将有一个非聚集的数字主键,然后在您的数据列上创建一个群集键,您将对其进行大量筛选。
这是编写SQL时的通用标准,但在基准测试方面,您只会发现varchar列在连接和过滤方面比整数列慢一些。只要你的主键永远不会改变,你就会没事。
https://stackoverflow.com/questions/15477005
复制相似问题