目录

数据库主键

自增


优势,数据库自己处理


缺点,难以分布式


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数据

table781m



serial

btree索引主键bigint

插入100W条西药4m23s

in查询3条记录0.024毫秒-0.066

410w数据

Table654m,索引占88m



hash索引和seria基本性能一致


410w数据

Uuid1012m

bigint742m


Uuid一旦有一个做外键,又会被放大数倍


UUID去掉-还可以少4个字符

尽可能不要用uuid,非要用的话就做单独一列hash索引,作为搜索条件




所以订单采用iduuid共存的方式

id作为主键,uuid作为orderNumber

ordernumber需要创建hash索引还需要创建unique约束

hash索引可用被同步复制到slave