为了账号安全,请及时绑定邮箱和手机立即绑定

关于表的主键问题

关于表的主键问题

慕工程0101907 2019-03-01 11:02:41
主键大部分应该只有 整数型(自动递增)或者 系统生成唯一码(例如UUID);想问一下这两种各有什么利弊,希望谈一下实际的经验。
查看完整描述

4 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

uuid 支持分库

查看完整回答
反对 回复 2019-03-01
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

字段为主键时,整数型比字符串型节省空间(你应该记得int只需4个字节吧,char一个字符一个字节)
字段不为主键时,除了节省空间,整数型比字符串型快很多,根据字符长度呈几何倍数增长

对于追求完美的,像ip地址这种数据,也是用整数保存在数据库中的(IP地址字符串与整数有一套固定的算法)。

举个例子;假如一个字段的值为1234567890,没有主键的情况下
做sql查询时 where id >= '1234567890'
int型只需比较1次
char型需要比较10次,每个字符都要参与比较。所以字符越长,速度越慢

如果数据库的数据量足够大,你执行类似sql也能很容易检验处char型的速度
where id like '123%' limit 5;
where id like '1234%' limit 5;
where id like '12345%' limit 5;
where id like '123456%' limit 5;
以上sql,执行速度依次更慢。因为字符越长,参与比较的次数越多。

而int型无论长短,只比1次

查看完整回答
反对 回复 2019-03-01
  • 4 回答
  • 0 关注
  • 474 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号