数据库表的主键列用什么类型合适?varchar、long还是integer?

数据库表的主键列用什么类型合适?varchar、long还是integer?,第1张

这要看你的需要了,就性能而言,还是整形值的效率会高些(很有限),如果记录多就用long,否则用int,如果有特殊需要用varchar也没什么,在性能上的表现是不明显的。整形值比字符形的另一个优点就是可以通过数据库实现自增加列,减少编程的复杂性。

1、关系:

主码=主键=主关键字

关键字=候选码

候选关键字=候选码中除去主码的其他候选码

2、理解:

主码(主键、主关键字):若一个关系有多个候选码,选择其中一个为主码。

候选码(关键字):某一属性组的值能唯一标识一个元组而其子集不能(去掉任意一个属性都不能标识该元组),则称该属性组为候选码(补充元组:表中的一行即为一个元组)。

主属性:候选码包含的属性(一个或多个属性)。

码:唯一标识实体的属性或属性组合称为码。

扩展资料:

常见的数据库字段类型如下:

1、Char固定长度字符串最大长度2000bytes。

2、VARCHAR2可变长度字符串最大长度4000bytes,索引最大长度749。

3、NCHAR基于字符集NCHAR固定长度字符串的最大长度2000bytes。

4、Nvarchar2基于字符集的可变长度字符串最大长度4000bytes。

5、DATE日期(日-月-年)DD-MM-YY(HH-MI-SS)经过严格测试,无千虫问题。

6、LONG超长字符串的最大长度为2G(231-1),足以存储大多数标题。

7、RAW原始定长二进制数据最大长度2000字节可存储多媒体图像声音等。

8、LONG RAW 长原始可变长度二进制数据最大长度2G,同上。

9、BLOB二进制数据最大长度4G CLOB字符数据最大长度4G。

10、NCLOB基于字符集4G的nclb最大字符数据长度。

11、BFILE数据库外存储的BFILE二进制数据的最大长度为4G。

我们首先通过代码输出Integer和Long最大值:

abc可以正确插入数据表,但是插入d时报错:

主键ID改为无符号int类型后abcd全部可以正确插入:

abc可以正确插入数据表,但是插入d时报错:

主键ID改为无符号Long类型后abcd全部可以正确插入:

如果希望单表可以存储尽可能多的数据,选择主键类型时Long优先于Int,无符号优先于有符号。

阿里巴巴开发手册建议:单表行数超过500万行或者单表容量超过2GB才推荐进行分库分表,如果预计三年后数据量根本达不到这个级别,请不要在创建表时就分库分表。

在业务初期可能并不用分库分表,但是随着业务发展,当单表记录数超过一定数量时就可以考虑分库分表,而不是等到自增主键用完时再分库分表,因为即使以有符号Int主键值上限分析,单表21亿数据也太多了。

分库分表原理与实际应用请参看笔者的两篇文章:

长文多图:一文讲清楚应对单数据表海量数据的六种策略

多图详解:如何不停服分库分表


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9252584.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存