数据库主键
自增
优势,数据库自己处理
缺点,难以分布式
UUID
优势,分布式随便搞
缺点,占用空间
pg下
UUID
btree索引主键uuid
索引正常工作,插入速度100W条要4m54s
in查询3条记录0.07毫秒
410w数据btree索引占用259m
hash索引主键uuid
索引正常工作,插入速度100W条要4m37s
in查询3条记录0.027毫秒
可见hash索引查询更快,插入略快
410w数据hash索引占用128m
hash索引不能唯一,所以不能使用外键
410w数据
table占781m
serial
btree索引主键bigint
插入100W条西药4m23s
in查询3条记录0.024毫秒-0.066
410w数据
Table占654m,索引占88m
hash索引和seria基本性能一致
410w数据
Uuid占1012m
bigint占742m
Uuid一旦有一个做外键,又会被放大数倍
UUID去掉-还可以少4个字符
尽可能不要用uuid,非要用的话就做单独一列hash索引,作为搜索条件
所以订单采用id和uuid共存的方式
id作为主键,uuid作为orderNumber
ordernumber需要创建hash索引还需要创建unique约束
hash索引可用被同步复制到slave